
// this is autogenerated file, do not edit it.
#include "ficus/ficus.h"

struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t;

static void _fx_free_Nt11Set__tree_t1R9Ast__id_t(struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t** dst);

struct _fx_N13Ast__binary_t_data_t;

static void _fx_free_N13Ast__binary_t(struct _fx_N13Ast__binary_t_data_t** dst);

struct _fx_N14K_form__ktyp_t_data_t;

static void _fx_free_N14K_form__ktyp_t(struct _fx_N14K_form__ktyp_t_data_t** dst);

struct _fx_N14K_form__kexp_t_data_t;

static void _fx_free_N14K_form__kexp_t(struct _fx_N14K_form__kexp_t_data_t** dst);

struct _fx_N14C_form__ctyp_t_data_t;

static void _fx_free_N14C_form__ctyp_t(struct _fx_N14C_form__ctyp_t_data_t** dst);

struct _fx_N14C_form__cexp_t_data_t;

static void _fx_free_N14C_form__cexp_t(struct _fx_N14C_form__cexp_t_data_t** dst);

struct _fx_N15C_form__cstmt_t_data_t;

static void _fx_free_N15C_form__cstmt_t(struct _fx_N15C_form__cstmt_t_data_t** dst);

typedef struct _fx_Ta2i {
   int_ t0;
   int_ t1;
} _fx_Ta2i;

typedef struct _fx_T2Ta2iS {
   struct _fx_Ta2i t0;
   fx_str_t t1;
} _fx_T2Ta2iS;

typedef struct _fx_R9Ast__id_t {
   int_ m;
   int_ i;
   int_ j;
} _fx_R9Ast__id_t;

typedef struct _fx_R10Ast__loc_t {
   int_ m_idx;
   int_ line0;
   int_ col0;
   int_ line1;
   int_ col1;
} _fx_R10Ast__loc_t;

typedef struct _fx_T2R9Ast__id_ti {
   struct _fx_R9Ast__id_t t0;
   int_ t1;
} _fx_T2R9Ast__id_ti;

typedef struct _fx_T2Bi {
   bool t0;
   int_ t1;
} _fx_T2Bi;

typedef struct _fx_N12Ast__scope_t {
   int tag;
   union {
      int_ ScBlock;
      struct _fx_T2Bi ScLoop;
      int_ ScFold;
      int_ ScArrMap;
      int_ ScMap;
      int_ ScTry;
      struct _fx_R9Ast__id_t ScFun;
      struct _fx_R9Ast__id_t ScClass;
      struct _fx_R9Ast__id_t ScInterface;
      int_ ScModule;
   } u;
} _fx_N12Ast__scope_t;

typedef struct _fx_LN12Ast__scope_t_data_t {
   int_ rc;
   struct _fx_LN12Ast__scope_t_data_t* tl;
   struct _fx_N12Ast__scope_t hd;
} _fx_LN12Ast__scope_t_data_t, *_fx_LN12Ast__scope_t;

typedef struct _fx_R16Ast__val_flags_t {
   bool val_flag_arg;
   bool val_flag_mutable;
   bool val_flag_temp;
   bool val_flag_tempref;
   bool val_flag_private;
   bool val_flag_subarray;
   bool val_flag_instance;
   struct _fx_T2R9Ast__id_ti val_flag_method;
   int_ val_flag_ctor;
   struct _fx_LN12Ast__scope_t_data_t* val_flag_global;
} _fx_R16Ast__val_flags_t;

typedef struct _fx_R17C_form__cdefval_t {
   struct _fx_R9Ast__id_t cv_name;
   struct _fx_N14C_form__ctyp_t_data_t* cv_typ;
   fx_str_t cv_cname;
   struct _fx_R16Ast__val_flags_t cv_flags;
   struct _fx_R10Ast__loc_t cv_loc;
} _fx_R17C_form__cdefval_t;

typedef struct _fx_R19C_form__cdeflabel_t {
   struct _fx_R9Ast__id_t cl_name;
   fx_str_t cl_cname;
   struct _fx_R10Ast__loc_t cl_loc;
} _fx_R19C_form__cdeflabel_t;

typedef struct _fx_T2R9Ast__id_tN14C_form__ctyp_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_N14C_form__ctyp_t_data_t* t1;
} _fx_T2R9Ast__id_tN14C_form__ctyp_t;

typedef struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t {
   int_ rc;
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* tl;
   struct _fx_T2R9Ast__id_tN14C_form__ctyp_t hd;
} _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t, *_fx_LT2R9Ast__id_tN14C_form__ctyp_t;

typedef struct _fx_R23C_form__cdefinterface_t {
   struct _fx_R9Ast__id_t ci_name;
   fx_str_t ci_cname;
   struct _fx_R9Ast__id_t ci_id;
   struct _fx_R9Ast__id_t ci_vtbl;
   struct _fx_R9Ast__id_t ci_base;
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* ci_all_methods;
   struct _fx_LN12Ast__scope_t_data_t* ci_scope;
   struct _fx_R10Ast__loc_t ci_loc;
} _fx_R23C_form__cdefinterface_t;

typedef struct _fx_rR23C_form__cdefinterface_t_data_t {
   int_ rc;
   struct _fx_R23C_form__cdefinterface_t data;
} _fx_rR23C_form__cdefinterface_t_data_t, *_fx_rR23C_form__cdefinterface_t;

typedef struct _fx_N17Ast__fun_constr_t {
   int tag;
   union {
      int_ CtorVariant;
      struct _fx_R9Ast__id_t CtorFP;
      struct _fx_R9Ast__id_t CtorExn;
   } u;
} _fx_N17Ast__fun_constr_t;

typedef struct _fx_R16Ast__fun_flags_t {
   int_ fun_flag_pure;
   bool fun_flag_ccode;
   bool fun_flag_have_keywords;
   bool fun_flag_inline;
   bool fun_flag_nothrow;
   bool fun_flag_really_nothrow;
   bool fun_flag_private;
   struct _fx_N17Ast__fun_constr_t fun_flag_ctor;
   struct _fx_R9Ast__id_t fun_flag_method_of;
   bool fun_flag_uses_fv;
   bool fun_flag_recursive;
   bool fun_flag_instance;
} _fx_R16Ast__fun_flags_t;

typedef struct _fx_LN15C_form__cstmt_t_data_t {
   int_ rc;
   struct _fx_LN15C_form__cstmt_t_data_t* tl;
   struct _fx_N15C_form__cstmt_t_data_t* hd;
} _fx_LN15C_form__cstmt_t_data_t, *_fx_LN15C_form__cstmt_t;

typedef struct _fx_N19C_form__carg_attr_t {
   int tag;
} _fx_N19C_form__carg_attr_t;

typedef struct _fx_LN19C_form__carg_attr_t_data_t {
   int_ rc;
   struct _fx_LN19C_form__carg_attr_t_data_t* tl;
   struct _fx_N19C_form__carg_attr_t hd;
} _fx_LN19C_form__carg_attr_t_data_t, *_fx_LN19C_form__carg_attr_t;

typedef struct _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_N14C_form__ctyp_t_data_t* t1;
   struct _fx_LN19C_form__carg_attr_t_data_t* t2;
} _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t;

typedef struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t {
   int_ rc;
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t* tl;
   struct _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t hd;
} _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t, *_fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t;

typedef struct _fx_R17C_form__cdeffun_t {
   struct _fx_R9Ast__id_t cf_name;
   fx_str_t cf_cname;
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t* cf_args;
   struct _fx_N14C_form__ctyp_t_data_t* cf_rt;
   struct _fx_LN15C_form__cstmt_t_data_t* cf_body;
   struct _fx_R16Ast__fun_flags_t cf_flags;
   struct _fx_LN12Ast__scope_t_data_t* cf_scope;
   struct _fx_R10Ast__loc_t cf_loc;
} _fx_R17C_form__cdeffun_t;

typedef struct _fx_rR17C_form__cdeffun_t_data_t {
   int_ rc;
   struct _fx_R17C_form__cdeffun_t data;
} _fx_rR17C_form__cdeffun_t_data_t, *_fx_rR17C_form__cdeffun_t;

typedef struct _fx_Ta2R9Ast__id_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_R9Ast__id_t t1;
} _fx_Ta2R9Ast__id_t;

typedef struct _fx_LR9Ast__id_t_data_t {
   int_ rc;
   struct _fx_LR9Ast__id_t_data_t* tl;
   struct _fx_R9Ast__id_t hd;
} _fx_LR9Ast__id_t_data_t, *_fx_LR9Ast__id_t;

typedef struct _fx_R17C_form__ctprops_t {
   bool ctp_scalar;
   bool ctp_complex;
   bool ctp_ptr;
   bool ctp_pass_by_ref;
   struct _fx_LR9Ast__id_t_data_t* ctp_make;
   struct _fx_Ta2R9Ast__id_t ctp_free;
   struct _fx_Ta2R9Ast__id_t ctp_copy;
} _fx_R17C_form__ctprops_t;

typedef struct _fx_R17C_form__cdeftyp_t {
   struct _fx_R9Ast__id_t ct_name;
   struct _fx_N14C_form__ctyp_t_data_t* ct_typ;
   fx_str_t ct_cname;
   struct _fx_R17C_form__ctprops_t ct_props;
   int_ ct_data_start;
   struct _fx_R9Ast__id_t ct_enum;
   struct _fx_LR9Ast__id_t_data_t* ct_ifaces;
   struct _fx_R9Ast__id_t ct_ifaces_id;
   struct _fx_LN12Ast__scope_t_data_t* ct_scope;
   struct _fx_R10Ast__loc_t ct_loc;
} _fx_R17C_form__cdeftyp_t;

typedef struct _fx_rR17C_form__cdeftyp_t_data_t {
   int_ rc;
   struct _fx_R17C_form__cdeftyp_t data;
} _fx_rR17C_form__cdeftyp_t_data_t, *_fx_rR17C_form__cdeftyp_t;

typedef struct _fx_Nt6option1N14C_form__cexp_t {
   int tag;
   union {
      struct _fx_N14C_form__cexp_t_data_t* Some;
   } u;
} _fx_Nt6option1N14C_form__cexp_t;

typedef struct _fx_T2R9Ast__id_tNt6option1N14C_form__cexp_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_Nt6option1N14C_form__cexp_t t1;
} _fx_T2R9Ast__id_tNt6option1N14C_form__cexp_t;

typedef struct _fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t_data_t {
   int_ rc;
   struct _fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t_data_t* tl;
   struct _fx_T2R9Ast__id_tNt6option1N14C_form__cexp_t hd;
} _fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t_data_t, *_fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t;

typedef struct _fx_R18C_form__cdefenum_t {
   struct _fx_R9Ast__id_t cenum_name;
   struct _fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t_data_t* cenum_members;
   fx_str_t cenum_cname;
   struct _fx_LN12Ast__scope_t_data_t* cenum_scope;
   struct _fx_R10Ast__loc_t cenum_loc;
} _fx_R18C_form__cdefenum_t;

typedef struct _fx_rR18C_form__cdefenum_t_data_t {
   int_ rc;
   struct _fx_R18C_form__cdefenum_t data;
} _fx_rR18C_form__cdefenum_t_data_t, *_fx_rR18C_form__cdefenum_t;

typedef struct _fx_R19C_form__cdefmacro_t {
   struct _fx_R9Ast__id_t cm_name;
   fx_str_t cm_cname;
   struct _fx_LR9Ast__id_t_data_t* cm_args;
   struct _fx_LN15C_form__cstmt_t_data_t* cm_body;
   struct _fx_LN12Ast__scope_t_data_t* cm_scope;
   struct _fx_R10Ast__loc_t cm_loc;
} _fx_R19C_form__cdefmacro_t;

typedef struct _fx_rR19C_form__cdefmacro_t_data_t {
   int_ rc;
   struct _fx_R19C_form__cdefmacro_t data;
} _fx_rR19C_form__cdefmacro_t_data_t, *_fx_rR19C_form__cdefmacro_t;

typedef struct _fx_R17C_form__cdefexn_t {
   struct _fx_R9Ast__id_t cexn_name;
   fx_str_t cexn_cname;
   fx_str_t cexn_base_cname;
   struct _fx_N14C_form__ctyp_t_data_t* cexn_typ;
   bool cexn_std;
   struct _fx_R9Ast__id_t cexn_tag;
   struct _fx_R9Ast__id_t cexn_data;
   struct _fx_R9Ast__id_t cexn_info;
   struct _fx_R9Ast__id_t cexn_make;
   struct _fx_LN12Ast__scope_t_data_t* cexn_scope;
   struct _fx_R10Ast__loc_t cexn_loc;
} _fx_R17C_form__cdefexn_t;

typedef struct _fx_rR17C_form__cdefexn_t_data_t {
   int_ rc;
   struct _fx_R17C_form__cdefexn_t data;
} _fx_rR17C_form__cdefexn_t_data_t, *_fx_rR17C_form__cdefexn_t;

typedef struct _fx_N15C_form__cinfo_t {
   int tag;
   union {
      struct _fx_R17C_form__cdefval_t CVal;
      struct _fx_rR17C_form__cdeffun_t_data_t* CFun;
      struct _fx_rR17C_form__cdeftyp_t_data_t* CTyp;
      struct _fx_rR17C_form__cdefexn_t_data_t* CExn;
      struct _fx_rR23C_form__cdefinterface_t_data_t* CInterface;
      struct _fx_rR18C_form__cdefenum_t_data_t* CEnum;
      struct _fx_R19C_form__cdeflabel_t CLabel;
      struct _fx_rR19C_form__cdefmacro_t_data_t* CMacro;
   } u;
} _fx_N15C_form__cinfo_t;

typedef struct _fx_R17K_form__kdefval_t {
   struct _fx_R9Ast__id_t kv_name;
   fx_str_t kv_cname;
   struct _fx_N14K_form__ktyp_t_data_t* kv_typ;
   struct _fx_R16Ast__val_flags_t kv_flags;
   struct _fx_R10Ast__loc_t kv_loc;
} _fx_R17K_form__kdefval_t;

typedef struct _fx_T2R9Ast__id_tN14K_form__ktyp_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_N14K_form__ktyp_t_data_t* t1;
} _fx_T2R9Ast__id_tN14K_form__ktyp_t;

typedef struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t {
   int_ rc;
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* tl;
   struct _fx_T2R9Ast__id_tN14K_form__ktyp_t hd;
} _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t, *_fx_LT2R9Ast__id_tN14K_form__ktyp_t;

typedef struct _fx_R23K_form__kdefinterface_t {
   struct _fx_R9Ast__id_t ki_name;
   struct _fx_R9Ast__id_t ki_base;
   fx_str_t ki_cname;
   struct _fx_R9Ast__id_t ki_id;
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* ki_all_methods;
   struct _fx_LN12Ast__scope_t_data_t* ki_scope;
   struct _fx_R10Ast__loc_t ki_loc;
} _fx_R23K_form__kdefinterface_t;

typedef struct _fx_rR23K_form__kdefinterface_t_data_t {
   int_ rc;
   struct _fx_R23K_form__kdefinterface_t data;
} _fx_rR23K_form__kdefinterface_t_data_t, *_fx_rR23K_form__kdefinterface_t;

typedef struct _fx_R25K_form__kdefclosureinfo_t {
   struct _fx_R9Ast__id_t kci_arg;
   struct _fx_R9Ast__id_t kci_fcv_t;
   struct _fx_R9Ast__id_t kci_fp_typ;
   struct _fx_R9Ast__id_t kci_make_fp;
   struct _fx_R9Ast__id_t kci_wrap_f;
} _fx_R25K_form__kdefclosureinfo_t;

typedef struct _fx_R17K_form__kdeffun_t {
   struct _fx_R9Ast__id_t kf_name;
   fx_str_t kf_cname;
   struct _fx_LR9Ast__id_t_data_t* kf_params;
   struct _fx_N14K_form__ktyp_t_data_t* kf_rt;
   struct _fx_N14K_form__kexp_t_data_t* kf_body;
   struct _fx_R16Ast__fun_flags_t kf_flags;
   struct _fx_R25K_form__kdefclosureinfo_t kf_closure;
   struct _fx_LN12Ast__scope_t_data_t* kf_scope;
   struct _fx_R10Ast__loc_t kf_loc;
} _fx_R17K_form__kdeffun_t;

typedef struct _fx_rR17K_form__kdeffun_t_data_t {
   int_ rc;
   struct _fx_R17K_form__kdeffun_t data;
} _fx_rR17K_form__kdeffun_t_data_t, *_fx_rR17K_form__kdeffun_t;

typedef struct _fx_R17K_form__kdefexn_t {
   struct _fx_R9Ast__id_t ke_name;
   fx_str_t ke_cname;
   fx_str_t ke_base_cname;
   struct _fx_N14K_form__ktyp_t_data_t* ke_typ;
   bool ke_std;
   struct _fx_R9Ast__id_t ke_tag;
   struct _fx_R9Ast__id_t ke_make;
   struct _fx_LN12Ast__scope_t_data_t* ke_scope;
   struct _fx_R10Ast__loc_t ke_loc;
} _fx_R17K_form__kdefexn_t;

typedef struct _fx_rR17K_form__kdefexn_t_data_t {
   int_ rc;
   struct _fx_R17K_form__kdefexn_t data;
} _fx_rR17K_form__kdefexn_t_data_t, *_fx_rR17K_form__kdefexn_t;

typedef struct _fx_R17K_form__ktprops_t {
   bool ktp_complex;
   bool ktp_scalar;
   bool ktp_ptr;
   bool ktp_pass_by_ref;
   bool ktp_custom_free;
   bool ktp_custom_copy;
} _fx_R17K_form__ktprops_t;

typedef struct _fx_Nt6option1R17K_form__ktprops_t {
   int tag;
   union {
      struct _fx_R17K_form__ktprops_t Some;
   } u;
} _fx_Nt6option1R17K_form__ktprops_t;

typedef struct _fx_R16Ast__var_flags_t {
   int_ var_flag_class_from;
   bool var_flag_record;
   bool var_flag_recursive;
   bool var_flag_have_tag;
   bool var_flag_have_mutable;
   bool var_flag_opt;
   bool var_flag_instance;
} _fx_R16Ast__var_flags_t;

typedef struct _fx_LN14K_form__ktyp_t_data_t {
   int_ rc;
   struct _fx_LN14K_form__ktyp_t_data_t* tl;
   struct _fx_N14K_form__ktyp_t_data_t* hd;
} _fx_LN14K_form__ktyp_t_data_t, *_fx_LN14K_form__ktyp_t;

typedef struct _fx_T2R9Ast__id_tLR9Ast__id_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_LR9Ast__id_t_data_t* t1;
} _fx_T2R9Ast__id_tLR9Ast__id_t;

typedef struct _fx_LT2R9Ast__id_tLR9Ast__id_t_data_t {
   int_ rc;
   struct _fx_LT2R9Ast__id_tLR9Ast__id_t_data_t* tl;
   struct _fx_T2R9Ast__id_tLR9Ast__id_t hd;
} _fx_LT2R9Ast__id_tLR9Ast__id_t_data_t, *_fx_LT2R9Ast__id_tLR9Ast__id_t;

typedef struct _fx_R21K_form__kdefvariant_t {
   struct _fx_R9Ast__id_t kvar_name;
   fx_str_t kvar_cname;
   struct _fx_R9Ast__id_t kvar_proto;
   struct _fx_Nt6option1R17K_form__ktprops_t kvar_props;
   struct _fx_LN14K_form__ktyp_t_data_t* kvar_targs;
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* kvar_cases;
   struct _fx_LR9Ast__id_t_data_t* kvar_ctors;
   struct _fx_R16Ast__var_flags_t kvar_flags;
   struct _fx_LT2R9Ast__id_tLR9Ast__id_t_data_t* kvar_ifaces;
   struct _fx_LN12Ast__scope_t_data_t* kvar_scope;
   struct _fx_R10Ast__loc_t kvar_loc;
} _fx_R21K_form__kdefvariant_t;

typedef struct _fx_rR21K_form__kdefvariant_t_data_t {
   int_ rc;
   struct _fx_R21K_form__kdefvariant_t data;
} _fx_rR21K_form__kdefvariant_t_data_t, *_fx_rR21K_form__kdefvariant_t;

typedef struct _fx_R17K_form__kdeftyp_t {
   struct _fx_R9Ast__id_t kt_name;
   fx_str_t kt_cname;
   struct _fx_R9Ast__id_t kt_proto;
   struct _fx_Nt6option1R17K_form__ktprops_t kt_props;
   struct _fx_LN14K_form__ktyp_t_data_t* kt_targs;
   struct _fx_N14K_form__ktyp_t_data_t* kt_typ;
   struct _fx_LN12Ast__scope_t_data_t* kt_scope;
   struct _fx_R10Ast__loc_t kt_loc;
} _fx_R17K_form__kdeftyp_t;

typedef struct _fx_rR17K_form__kdeftyp_t_data_t {
   int_ rc;
   struct _fx_R17K_form__kdeftyp_t data;
} _fx_rR17K_form__kdeftyp_t_data_t, *_fx_rR17K_form__kdeftyp_t;

typedef struct _fx_R25K_form__kdefclosurevars_t {
   struct _fx_R9Ast__id_t kcv_name;
   fx_str_t kcv_cname;
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* kcv_freevars;
   struct _fx_LR9Ast__id_t_data_t* kcv_orig_freevars;
   struct _fx_LN12Ast__scope_t_data_t* kcv_scope;
   struct _fx_R10Ast__loc_t kcv_loc;
} _fx_R25K_form__kdefclosurevars_t;

typedef struct _fx_rR25K_form__kdefclosurevars_t_data_t {
   int_ rc;
   struct _fx_R25K_form__kdefclosurevars_t data;
} _fx_rR25K_form__kdefclosurevars_t_data_t, *_fx_rR25K_form__kdefclosurevars_t;

typedef struct _fx_FPi2R9Ast__id_tR9Ast__id_t {
   int (*fp)(struct _fx_R9Ast__id_t*, struct _fx_R9Ast__id_t*, int_*, void*);
   fx_fcv_t* fcv;
} _fx_FPi2R9Ast__id_tR9Ast__id_t;

typedef struct _fx_N12Set__color_t {
   int tag;
} _fx_N12Set__color_t;

typedef struct _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t {
   struct _fx_N12Set__color_t t0;
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t1;
   struct _fx_R9Ast__id_t t2;
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t3;
} _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t;

typedef struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t {
   int_ rc;
   union {
      struct _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t Node;
   } u;
} _fx_Nt11Set__tree_t1R9Ast__id_t_data_t, *_fx_Nt11Set__tree_t1R9Ast__id_t;

typedef struct _fx_Rt6Set__t1R9Ast__id_t {
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* root;
   int_ size;
   struct _fx_FPi2R9Ast__id_tR9Ast__id_t cmp;
} _fx_Rt6Set__t1R9Ast__id_t;

typedef struct _fx_T2R10Ast__loc_tS {
   struct _fx_R10Ast__loc_t t0;
   fx_str_t t1;
} _fx_T2R10Ast__loc_tS;

typedef struct _fx_N12Ast__cmpop_t {
   int tag;
} _fx_N12Ast__cmpop_t;

typedef struct _fx_N13Ast__binary_t_data_t {
   int_ rc;
   int tag;
   union {
      struct _fx_N12Ast__cmpop_t OpCmp;
      struct _fx_N12Ast__cmpop_t OpDotCmp;
      struct _fx_N13Ast__binary_t_data_t* OpAugBinary;
   } u;
} _fx_N13Ast__binary_t_data_t, *_fx_N13Ast__binary_t;

typedef struct _fx_Nt6option1rR23K_form__kdefinterface_t {
   int tag;
   union {
      struct _fx_rR23K_form__kdefinterface_t_data_t* Some;
   } u;
} _fx_Nt6option1rR23K_form__kdefinterface_t;

typedef struct _fx_T2il {
   int_ t0;
   int64_t t1;
} _fx_T2il;

typedef struct _fx_T2iq {
   int_ t0;
   uint64_t t1;
} _fx_T2iq;

typedef struct _fx_T2id {
   int_ t0;
   double t1;
} _fx_T2id;

typedef struct _fx_N14K_form__klit_t {
   int tag;
   union {
      int64_t KLitInt;
      struct _fx_T2il KLitSInt;
      struct _fx_T2iq KLitUInt;
      struct _fx_T2id KLitFloat;
      fx_str_t KLitString;
      char_ KLitChar;
      bool KLitBool;
      struct _fx_N14K_form__ktyp_t_data_t* KLitNil;
   } u;
} _fx_N14K_form__klit_t;

typedef struct _fx_N14K_form__atom_t {
   int tag;
   union {
      struct _fx_R9Ast__id_t AtomId;
      struct _fx_N14K_form__klit_t AtomLit;
   } u;
} _fx_N14K_form__atom_t;

typedef struct _fx_Nt6option1N14K_form__atom_t {
   int tag;
   union {
      struct _fx_N14K_form__atom_t Some;
   } u;
} _fx_Nt6option1N14K_form__atom_t;

typedef struct _fx_LN14K_form__kexp_t_data_t {
   int_ rc;
   struct _fx_LN14K_form__kexp_t_data_t* tl;
   struct _fx_N14K_form__kexp_t_data_t* hd;
} _fx_LN14K_form__kexp_t_data_t, *_fx_LN14K_form__kexp_t;

typedef struct _fx_T2BN14K_form__atom_t {
   bool t0;
   struct _fx_N14K_form__atom_t t1;
} _fx_T2BN14K_form__atom_t;

typedef struct _fx_LT2BN14K_form__atom_t_data_t {
   int_ rc;
   struct _fx_LT2BN14K_form__atom_t_data_t* tl;
   struct _fx_T2BN14K_form__atom_t hd;
} _fx_LT2BN14K_form__atom_t_data_t, *_fx_LT2BN14K_form__atom_t;

typedef struct _fx_N12Ast__unary_t {
   int tag;
} _fx_N12Ast__unary_t;

typedef struct _fx_N12Ast__sctyp_t {
   int tag;
} _fx_N12Ast__sctyp_t;

typedef struct _fx_N13Ast__intrin_t {
   int tag;
   union {
      struct _fx_R9Ast__id_t IntrinMath;
      struct _fx_N12Ast__sctyp_t IntrinSaturate;
   } u;
} _fx_N13Ast__intrin_t;

typedef struct _fx_N15Ast__for_make_t {
   int tag;
} _fx_N15Ast__for_make_t;

typedef struct _fx_R16Ast__for_flags_t {
   bool for_flag_parallel;
   struct _fx_N15Ast__for_make_t for_flag_make;
   bool for_flag_unzip;
   bool for_flag_fold;
   bool for_flag_nested;
} _fx_R16Ast__for_flags_t;

typedef struct _fx_N13Ast__border_t {
   int tag;
} _fx_N13Ast__border_t;

typedef struct _fx_N18Ast__interpolate_t {
   int tag;
} _fx_N18Ast__interpolate_t;

typedef struct _fx_T2LN14K_form__ktyp_tN14K_form__ktyp_t {
   struct _fx_LN14K_form__ktyp_t_data_t* t0;
   struct _fx_N14K_form__ktyp_t_data_t* t1;
} _fx_T2LN14K_form__ktyp_tN14K_form__ktyp_t;

typedef struct _fx_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* t1;
} _fx_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t;

typedef struct _fx_T2iN14K_form__ktyp_t {
   int_ t0;
   struct _fx_N14K_form__ktyp_t_data_t* t1;
} _fx_T2iN14K_form__ktyp_t;

typedef struct _fx_N14K_form__ktyp_t_data_t {
   int_ rc;
   int tag;
   union {
      int_ KTypSInt;
      int_ KTypUInt;
      int_ KTypFloat;
      struct _fx_N14K_form__ktyp_t_data_t* KTypRawPointer;
      struct _fx_T2LN14K_form__ktyp_tN14K_form__ktyp_t KTypFun;
      struct _fx_LN14K_form__ktyp_t_data_t* KTypTuple;
      struct _fx_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t KTypRecord;
      struct _fx_R9Ast__id_t KTypName;
      struct _fx_T2iN14K_form__ktyp_t KTypArray;
      struct _fx_N14K_form__ktyp_t_data_t* KTypVector;
      struct _fx_N14K_form__ktyp_t_data_t* KTypList;
      struct _fx_N14K_form__ktyp_t_data_t* KTypRef;
   } u;
} _fx_N14K_form__ktyp_t_data_t, *_fx_N14K_form__ktyp_t;

typedef struct _fx_Ta3N14K_form__atom_t {
   struct _fx_N14K_form__atom_t t0;
   struct _fx_N14K_form__atom_t t1;
   struct _fx_N14K_form__atom_t t2;
} _fx_Ta3N14K_form__atom_t;

typedef struct _fx_N13K_form__dom_t {
   int tag;
   union {
      struct _fx_N14K_form__atom_t DomainElem;
      struct _fx_N14K_form__atom_t DomainFast;
      struct _fx_Ta3N14K_form__atom_t DomainRange;
   } u;
} _fx_N13K_form__dom_t;

typedef struct _fx_T2Nt6option1N14K_form__atom_tR10Ast__loc_t {
   struct _fx_Nt6option1N14K_form__atom_t t0;
   struct _fx_R10Ast__loc_t t1;
} _fx_T2Nt6option1N14K_form__atom_tR10Ast__loc_t;

typedef struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N14K_form__ktyp_t_data_t* t0;
   struct _fx_R10Ast__loc_t t1;
} _fx_T2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N14K_form__atom_t t0;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t1;
} _fx_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N13Ast__binary_t_data_t* t0;
   struct _fx_N14K_form__atom_t t1;
   struct _fx_N14K_form__atom_t t2;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t3;
} _fx_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N12Ast__unary_t t0;
   struct _fx_N14K_form__atom_t t1;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t2;
} _fx_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_LN14K_form__atom_t_data_t {
   int_ rc;
   struct _fx_LN14K_form__atom_t_data_t* tl;
   struct _fx_N14K_form__atom_t hd;
} _fx_LN14K_form__atom_t_data_t, *_fx_LN14K_form__atom_t;

typedef struct _fx_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N13Ast__intrin_t t0;
   struct _fx_LN14K_form__atom_t_data_t* t1;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t2;
} _fx_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T2R9Ast__id_tN14K_form__kexp_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_N14K_form__kexp_t_data_t* t1;
} _fx_T2R9Ast__id_tN14K_form__kexp_t;

typedef struct _fx_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_LN14K_form__kexp_t_data_t* t0;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t1;
} _fx_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N14K_form__kexp_t_data_t* t0;
   struct _fx_N14K_form__kexp_t_data_t* t1;
   struct _fx_N14K_form__kexp_t_data_t* t2;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t3;
} _fx_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_LN14K_form__atom_t_data_t* t1;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t2;
} _fx_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   int_ t1;
   struct _fx_LN14K_form__atom_t_data_t* t2;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t3;
} _fx_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_LN14K_form__atom_t_data_t* t0;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t1;
} _fx_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_R9Ast__id_t t1;
   struct _fx_LN14K_form__atom_t_data_t* t2;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t3;
} _fx_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_LLT2BN14K_form__atom_t_data_t {
   int_ rc;
   struct _fx_LLT2BN14K_form__atom_t_data_t* tl;
   struct _fx_LT2BN14K_form__atom_t_data_t* hd;
} _fx_LLT2BN14K_form__atom_t_data_t, *_fx_LLT2BN14K_form__atom_t;

typedef struct _fx_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   bool t0;
   struct _fx_LLT2BN14K_form__atom_t_data_t* t1;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t2;
} _fx_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_LT2BN14K_form__atom_t_data_t* t0;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t1;
} _fx_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_LN13K_form__dom_t_data_t {
   int_ rc;
   struct _fx_LN13K_form__dom_t_data_t* tl;
   struct _fx_N13K_form__dom_t hd;
} _fx_LN13K_form__dom_t_data_t, *_fx_LN13K_form__dom_t;

typedef struct _fx_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N14K_form__atom_t t0;
   struct _fx_N13Ast__border_t t1;
   struct _fx_N18Ast__interpolate_t t2;
   struct _fx_LN13K_form__dom_t_data_t* t3;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t4;
} _fx_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   int_ t1;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t2;
} _fx_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_N14K_form__atom_t t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t;

typedef struct _fx_T2LN14K_form__kexp_tN14K_form__kexp_t {
   struct _fx_LN14K_form__kexp_t_data_t* t0;
   struct _fx_N14K_form__kexp_t_data_t* t1;
} _fx_T2LN14K_form__kexp_tN14K_form__kexp_t;

typedef struct _fx_LT2LN14K_form__kexp_tN14K_form__kexp_t_data_t {
   int_ rc;
   struct _fx_LT2LN14K_form__kexp_tN14K_form__kexp_t_data_t* tl;
   struct _fx_T2LN14K_form__kexp_tN14K_form__kexp_t hd;
} _fx_LT2LN14K_form__kexp_tN14K_form__kexp_t_data_t, *_fx_LT2LN14K_form__kexp_tN14K_form__kexp_t;

typedef struct _fx_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_LT2LN14K_form__kexp_tN14K_form__kexp_t_data_t* t0;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t1;
} _fx_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N14K_form__kexp_t_data_t* t0;
   struct _fx_N14K_form__kexp_t_data_t* t1;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t2;
} _fx_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T3R9Ast__id_tBR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   bool t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3R9Ast__id_tBR10Ast__loc_t;

typedef struct _fx_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_N14K_form__atom_t t0;
   struct _fx_N14K_form__ktyp_t_data_t* t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T2R9Ast__id_tN13K_form__dom_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_N13K_form__dom_t t1;
} _fx_T2R9Ast__id_tN13K_form__dom_t;

typedef struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t {
   int_ rc;
   struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t* tl;
   struct _fx_T2R9Ast__id_tN13K_form__dom_t hd;
} _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t, *_fx_LT2R9Ast__id_tN13K_form__dom_t;

typedef struct _fx_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t {
   struct _fx_N14K_form__kexp_t_data_t* t0;
   struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t* t1;
   struct _fx_LR9Ast__id_t_data_t* t2;
} _fx_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t;

typedef struct _fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t_data_t {
   int_ rc;
   struct _fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t_data_t* tl;
   struct _fx_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t hd;
} _fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t_data_t, *_fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t;

typedef struct _fx_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t {
   struct _fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t_data_t* t0;
   struct _fx_N14K_form__kexp_t_data_t* t1;
   struct _fx_R16Ast__for_flags_t t2;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t3;
} _fx_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t {
   struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t* t0;
   struct _fx_LR9Ast__id_t_data_t* t1;
   struct _fx_N14K_form__kexp_t_data_t* t2;
   struct _fx_R16Ast__for_flags_t t3;
   struct _fx_R10Ast__loc_t t4;
} _fx_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t;

typedef struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t {
   struct _fx_N14K_form__kexp_t_data_t* t0;
   struct _fx_N14K_form__kexp_t_data_t* t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t;

typedef struct _fx_T2ST2N14K_form__ktyp_tR10Ast__loc_t {
   fx_str_t t0;
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t t1;
} _fx_T2ST2N14K_form__ktyp_tR10Ast__loc_t;

typedef struct _fx_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_N14K_form__kexp_t_data_t* t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t;

typedef struct _fx_N14K_form__kexp_t_data_t {
   int_ rc;
   int tag;
   union {
      struct _fx_R10Ast__loc_t KExpNop;
      struct _fx_R10Ast__loc_t KExpBreak;
      struct _fx_R10Ast__loc_t KExpContinue;
      struct _fx_T2Nt6option1N14K_form__atom_tR10Ast__loc_t KExpReturn;
      struct _fx_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpAtom;
      struct _fx_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpBinary;
      struct _fx_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpUnary;
      struct _fx_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpIntrin;
      struct _fx_T2R9Ast__id_tN14K_form__kexp_t KExpSync;
      struct _fx_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t KExpSeq;
      struct _fx_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t KExpIf;
      struct _fx_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpCall;
      struct _fx_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpICall;
      struct _fx_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpMkTuple;
      struct _fx_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpMkRecord;
      struct _fx_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpMkClosure;
      struct _fx_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpMkArray;
      struct _fx_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t KExpMkVector;
      struct _fx_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t
         KExpAt;
      struct _fx_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t KExpMem;
      struct _fx_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t KExpAssign;
      struct _fx_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t KExpMatch;
      struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t KExpTryCatch;
      struct _fx_T3R9Ast__id_tBR10Ast__loc_t KExpThrow;
      struct _fx_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t KExpCast;
      struct _fx_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t
         KExpMap;
      struct _fx_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t KExpFor;
      struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t KExpWhile;
      struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t KExpDoWhile;
      struct _fx_T2ST2N14K_form__ktyp_tR10Ast__loc_t KExpCCode;
      struct _fx_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t KDefVal;
      struct _fx_rR17K_form__kdeffun_t_data_t* KDefFun;
      struct _fx_rR17K_form__kdefexn_t_data_t* KDefExn;
      struct _fx_rR21K_form__kdefvariant_t_data_t* KDefVariant;
      struct _fx_rR23K_form__kdefinterface_t_data_t* KDefInterface;
      struct _fx_rR17K_form__kdeftyp_t_data_t* KDefTyp;
      struct _fx_rR25K_form__kdefclosurevars_t_data_t* KDefClosureVars;
   } u;
} _fx_N14K_form__kexp_t_data_t, *_fx_N14K_form__kexp_t;

typedef struct _fx_Nt6option1N14C_form__ctyp_t {
   int tag;
   union {
      struct _fx_N14C_form__ctyp_t_data_t* Some;
   } u;
} _fx_Nt6option1N14C_form__ctyp_t;

typedef struct _fx_Nt6option1R9Ast__id_t {
   int tag;
   union {
      struct _fx_R9Ast__id_t Some;
   } u;
} _fx_Nt6option1R9Ast__id_t;

typedef struct _fx_T2R9Ast__id_tR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_R10Ast__loc_t t1;
} _fx_T2R9Ast__id_tR10Ast__loc_t;

typedef struct _fx_T2SR10Ast__loc_t {
   fx_str_t t0;
   struct _fx_R10Ast__loc_t t1;
} _fx_T2SR10Ast__loc_t;

typedef struct _fx_N17C_form__cbinary_t {
   int tag;
   union {
      struct _fx_N12Ast__cmpop_t COpCmp;
   } u;
} _fx_N17C_form__cbinary_t;

typedef struct _fx_N16C_form__cunary_t {
   int tag;
} _fx_N16C_form__cunary_t;

typedef struct _fx_N19C_form__ctyp_attr_t {
   int tag;
} _fx_N19C_form__ctyp_attr_t;

typedef struct _fx_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t {
   struct _fx_Nt6option1R9Ast__id_t t0;
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* t1;
} _fx_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t;

typedef struct _fx_LN14C_form__ctyp_t_data_t {
   int_ rc;
   struct _fx_LN14C_form__ctyp_t_data_t* tl;
   struct _fx_N14C_form__ctyp_t_data_t* hd;
} _fx_LN14C_form__ctyp_t_data_t, *_fx_LN14C_form__ctyp_t;

typedef struct _fx_T2LN14C_form__ctyp_tN14C_form__ctyp_t {
   struct _fx_LN14C_form__ctyp_t_data_t* t0;
   struct _fx_N14C_form__ctyp_t_data_t* t1;
} _fx_T2LN14C_form__ctyp_tN14C_form__ctyp_t;

typedef struct _fx_LN19C_form__ctyp_attr_t_data_t {
   int_ rc;
   struct _fx_LN19C_form__ctyp_attr_t_data_t* tl;
   struct _fx_N19C_form__ctyp_attr_t hd;
} _fx_LN19C_form__ctyp_attr_t_data_t, *_fx_LN19C_form__ctyp_attr_t;

typedef struct _fx_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t {
   struct _fx_LN19C_form__ctyp_attr_t_data_t* t0;
   struct _fx_N14C_form__ctyp_t_data_t* t1;
} _fx_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t;

typedef struct _fx_T2iN14C_form__ctyp_t {
   int_ t0;
   struct _fx_N14C_form__ctyp_t_data_t* t1;
} _fx_T2iN14C_form__ctyp_t;

typedef struct _fx_N14C_form__ctyp_t_data_t {
   int_ rc;
   int tag;
   union {
      int_ CTypSInt;
      int_ CTypUInt;
      int_ CTypFloat;
      struct _fx_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t CTypStruct;
      struct _fx_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t CTypUnion;
      struct _fx_T2LN14C_form__ctyp_tN14C_form__ctyp_t CTypFunRawPtr;
      struct _fx_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t CTypRawPtr;
      struct _fx_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t CTypRawArray;
      struct _fx_T2iN14C_form__ctyp_t CTypArray;
      struct _fx_N14C_form__ctyp_t_data_t* CTypVector;
      struct _fx_R9Ast__id_t CTypName;
   } u;
} _fx_N14C_form__ctyp_t_data_t, *_fx_N14C_form__ctyp_t;

typedef struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_N14C_form__ctyp_t_data_t* t0;
   struct _fx_R10Ast__loc_t t1;
} _fx_T2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t t1;
} _fx_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_N14K_form__klit_t t0;
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t t1;
} _fx_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_N17C_form__cbinary_t t0;
   struct _fx_N14C_form__cexp_t_data_t* t1;
   struct _fx_N14C_form__cexp_t_data_t* t2;
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t t3;
} _fx_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_N16C_form__cunary_t t0;
   struct _fx_N14C_form__cexp_t_data_t* t1;
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t t2;
} _fx_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_N14C_form__cexp_t_data_t* t0;
   struct _fx_R9Ast__id_t t1;
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t t2;
} _fx_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_N14C_form__cexp_t_data_t* t0;
   struct _fx_N14C_form__ctyp_t_data_t* t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_N14C_form__cexp_t_data_t* t0;
   struct _fx_N14C_form__cexp_t_data_t* t1;
   struct _fx_N14C_form__cexp_t_data_t* t2;
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t t3;
} _fx_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_LN14C_form__cexp_t_data_t {
   int_ rc;
   struct _fx_LN14C_form__cexp_t_data_t* tl;
   struct _fx_N14C_form__cexp_t_data_t* hd;
} _fx_LN14C_form__cexp_t_data_t, *_fx_LN14C_form__cexp_t;

typedef struct _fx_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_N14C_form__cexp_t_data_t* t0;
   struct _fx_LN14C_form__cexp_t_data_t* t1;
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t t2;
} _fx_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t {
   struct _fx_LN14C_form__cexp_t_data_t* t0;
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t t1;
} _fx_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t;

typedef struct _fx_N14C_form__cexp_t_data_t {
   int_ rc;
   int tag;
   union {
      struct _fx_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t CExpIdent;
      struct _fx_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t CExpLit;
      struct _fx_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t CExpBinary;
      struct _fx_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t CExpUnary;
      struct _fx_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t CExpMem;
      struct _fx_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t CExpArrow;
      struct _fx_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t CExpCast;
      struct _fx_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t CExpTernary;
      struct _fx_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t CExpCall;
      struct _fx_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t CExpInit;
      struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t CExpTyp;
      struct _fx_T2SR10Ast__loc_t CExpCCode;
   } u;
} _fx_N14C_form__cexp_t_data_t, *_fx_N14C_form__cexp_t;

typedef struct _fx_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t {
   struct _fx_Nt6option1N14C_form__cexp_t t0;
   struct _fx_R10Ast__loc_t t1;
} _fx_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t;

typedef struct _fx_T2LN15C_form__cstmt_tR10Ast__loc_t {
   struct _fx_LN15C_form__cstmt_t_data_t* t0;
   struct _fx_R10Ast__loc_t t1;
} _fx_T2LN15C_form__cstmt_tR10Ast__loc_t;

typedef struct _fx_T2R9Ast__id_tN15C_form__cstmt_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_N15C_form__cstmt_t_data_t* t1;
} _fx_T2R9Ast__id_tN15C_form__cstmt_t;

typedef struct _fx_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t {
   struct _fx_N14C_form__cexp_t_data_t* t0;
   struct _fx_N15C_form__cstmt_t_data_t* t1;
   struct _fx_N15C_form__cstmt_t_data_t* t2;
   struct _fx_R10Ast__loc_t t3;
} _fx_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t;

typedef struct _fx_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t {
   struct _fx_Nt6option1N14C_form__ctyp_t t0;
   struct _fx_LN14C_form__cexp_t_data_t* t1;
   struct _fx_Nt6option1N14C_form__cexp_t t2;
   struct _fx_LN14C_form__cexp_t_data_t* t3;
   struct _fx_N15C_form__cstmt_t_data_t* t4;
   struct _fx_R10Ast__loc_t t5;
} _fx_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t;

typedef struct _fx_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t {
   struct _fx_N14C_form__cexp_t_data_t* t0;
   struct _fx_N15C_form__cstmt_t_data_t* t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t;

typedef struct _fx_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t {
   struct _fx_N15C_form__cstmt_t_data_t* t0;
   struct _fx_N14C_form__cexp_t_data_t* t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t;

typedef struct _fx_T2LN14C_form__cexp_tLN15C_form__cstmt_t {
   struct _fx_LN14C_form__cexp_t_data_t* t0;
   struct _fx_LN15C_form__cstmt_t_data_t* t1;
} _fx_T2LN14C_form__cexp_tLN15C_form__cstmt_t;

typedef struct _fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t_data_t {
   int_ rc;
   struct _fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t_data_t* tl;
   struct _fx_T2LN14C_form__cexp_tLN15C_form__cstmt_t hd;
} _fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t_data_t, *_fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t;

typedef struct _fx_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t {
   struct _fx_N14C_form__cexp_t_data_t* t0;
   struct _fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t_data_t* t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t;

typedef struct _fx_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t {
   struct _fx_N14C_form__ctyp_t_data_t* t0;
   struct _fx_R9Ast__id_t t1;
   struct _fx_Nt6option1N14C_form__cexp_t t2;
   struct _fx_R10Ast__loc_t t3;
} _fx_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t;

typedef struct _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t {
   struct _fx_N14C_form__cexp_t_data_t* t0;
   struct _fx_LN15C_form__cstmt_t_data_t* t1;
} _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t;

typedef struct _fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t_data_t {
   int_ rc;
   struct _fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t_data_t* tl;
   struct _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t hd;
} _fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t_data_t, *_fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t;

typedef struct _fx_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t {
   struct _fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t_data_t* t0;
   struct _fx_LN15C_form__cstmt_t_data_t* t1;
   struct _fx_R10Ast__loc_t t2;
} _fx_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t;

typedef struct _fx_N15C_form__cstmt_t_data_t {
   int_ rc;
   int tag;
   union {
      struct _fx_R10Ast__loc_t CStmtNop;
      struct _fx_T2SR10Ast__loc_t CComment;
      struct _fx_N14C_form__cexp_t_data_t* CExp;
      struct _fx_R10Ast__loc_t CStmtBreak;
      struct _fx_R10Ast__loc_t CStmtContinue;
      struct _fx_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t CStmtReturn;
      struct _fx_T2LN15C_form__cstmt_tR10Ast__loc_t CStmtBlock;
      struct _fx_T2R9Ast__id_tN15C_form__cstmt_t CStmtSync;
      struct _fx_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t CStmtIf;
      struct _fx_T2R9Ast__id_tR10Ast__loc_t CStmtGoto;
      struct _fx_T2R9Ast__id_tR10Ast__loc_t CStmtLabel;
      struct _fx_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t
         CStmtFor;
      struct _fx_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t CStmtWhile;
      struct _fx_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t CStmtDoWhile;
      struct _fx_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t CStmtSwitch;
      struct _fx_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t CDefVal;
      struct _fx_rR17C_form__cdeffun_t_data_t* CDefFun;
      struct _fx_rR17C_form__cdeftyp_t_data_t* CDefTyp;
      struct _fx_T2R9Ast__id_tR10Ast__loc_t CDefForwardSym;
      struct _fx_T2R9Ast__id_tR10Ast__loc_t CDefForwardTyp;
      struct _fx_rR18C_form__cdefenum_t_data_t* CDefEnum;
      struct _fx_rR23C_form__cdefinterface_t_data_t* CDefInterface;
      struct _fx_rR19C_form__cdefmacro_t_data_t* CMacroDef;
      struct _fx_T2R9Ast__id_tR10Ast__loc_t CMacroUndef;
      struct _fx_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t CMacroIf;
      struct _fx_T2SR10Ast__loc_t CMacroInclude;
      struct _fx_T2SR10Ast__loc_t CMacroPragma;
   } u;
} _fx_N15C_form__cstmt_t_data_t, *_fx_N15C_form__cstmt_t;

typedef struct _fx_T2Nt11Set__tree_t1R9Ast__id_ti {
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t0;
   int_ t1;
} _fx_T2Nt11Set__tree_t1R9Ast__id_ti;

typedef struct _fx_T2Nt11Set__tree_t1R9Ast__id_tB {
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t0;
   bool t1;
} _fx_T2Nt11Set__tree_t1R9Ast__id_tB;

typedef struct _fx_Ta3LN15C_form__cstmt_t {
   struct _fx_LN15C_form__cstmt_t_data_t* t0;
   struct _fx_LN15C_form__cstmt_t_data_t* t1;
   struct _fx_LN15C_form__cstmt_t_data_t* t2;
} _fx_Ta3LN15C_form__cstmt_t;

typedef struct _fx_T2N14C_form__ctyp_tLN19C_form__carg_attr_t {
   struct _fx_N14C_form__ctyp_t_data_t* t0;
   struct _fx_LN19C_form__carg_attr_t_data_t* t1;
} _fx_T2N14C_form__ctyp_tLN19C_form__carg_attr_t;

typedef struct _fx_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t {
   struct _fx_N14C_form__ctyp_t_data_t* t0;
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t* t1;
} _fx_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t;

typedef struct _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t {
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* t0;
   struct _fx_LN15C_form__cstmt_t_data_t* t1;
} _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t;

typedef struct _fx_T2R9Ast__id_tLN15C_form__cstmt_t {
   struct _fx_R9Ast__id_t t0;
   struct _fx_LN15C_form__cstmt_t_data_t* t1;
} _fx_T2R9Ast__id_tLN15C_form__cstmt_t;

typedef struct _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t {
   struct _fx_LN15C_form__cstmt_t_data_t* t0;
   struct _fx_LR9Ast__id_t_data_t* t1;
   struct _fx_LN14C_form__cexp_t_data_t* t2;
   struct _fx_Rt6Set__t1R9Ast__id_t t3;
} _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t;

typedef struct {
   int_ rc;
   int_ data;
} _fx_E4Exit_data_t;

typedef struct {
   int_ rc;
   fx_str_t data;
} _fx_E4Fail_data_t;

typedef struct {
   int_ rc;
   struct _fx_T2Ta2iS data;
} _fx_E22LexerUtils__LexerError_data_t;

typedef struct {
   int_ rc;
   struct _fx_T2R10Ast__loc_tS data;
} _fx_E17Ast__CompileError_data_t;

typedef struct {
   int_ rc;
   struct _fx_T2R10Ast__loc_tS data;
} _fx_E18Parser__ParseError_data_t;

static void _fx_free_T2Ta2iS(struct _fx_T2Ta2iS* dst)
{
   fx_free_str(&dst->t1);
}

static void _fx_copy_T2Ta2iS(struct _fx_T2Ta2iS* src, struct _fx_T2Ta2iS* dst)
{
   dst->t0 = src->t0;
   fx_copy_str(&src->t1, &dst->t1);
}

static void _fx_make_T2Ta2iS(struct _fx_Ta2i* t0, fx_str_t* t1, struct _fx_T2Ta2iS* fx_result)
{
   fx_result->t0 = *t0;
   fx_copy_str(t1, &fx_result->t1);
}

static int _fx_cons_LN12Ast__scope_t(
   struct _fx_N12Ast__scope_t* hd,
   struct _fx_LN12Ast__scope_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN12Ast__scope_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN12Ast__scope_t, FX_COPY_SIMPLE_BY_PTR);
}

static void _fx_free_R16Ast__val_flags_t(struct _fx_R16Ast__val_flags_t* dst)
{
   fx_free_list_simple(&dst->val_flag_global);
}

static void _fx_copy_R16Ast__val_flags_t(struct _fx_R16Ast__val_flags_t* src, struct _fx_R16Ast__val_flags_t* dst)
{
   dst->val_flag_arg = src->val_flag_arg;
   dst->val_flag_mutable = src->val_flag_mutable;
   dst->val_flag_temp = src->val_flag_temp;
   dst->val_flag_tempref = src->val_flag_tempref;
   dst->val_flag_private = src->val_flag_private;
   dst->val_flag_subarray = src->val_flag_subarray;
   dst->val_flag_instance = src->val_flag_instance;
   dst->val_flag_method = src->val_flag_method;
   dst->val_flag_ctor = src->val_flag_ctor;
   FX_COPY_PTR(src->val_flag_global, &dst->val_flag_global);
}

static void _fx_make_R16Ast__val_flags_t(
   bool r_val_flag_arg,
   bool r_val_flag_mutable,
   bool r_val_flag_temp,
   bool r_val_flag_tempref,
   bool r_val_flag_private,
   bool r_val_flag_subarray,
   bool r_val_flag_instance,
   struct _fx_T2R9Ast__id_ti* r_val_flag_method,
   int_ r_val_flag_ctor,
   struct _fx_LN12Ast__scope_t_data_t* r_val_flag_global,
   struct _fx_R16Ast__val_flags_t* fx_result)
{
   fx_result->val_flag_arg = r_val_flag_arg;
   fx_result->val_flag_mutable = r_val_flag_mutable;
   fx_result->val_flag_temp = r_val_flag_temp;
   fx_result->val_flag_tempref = r_val_flag_tempref;
   fx_result->val_flag_private = r_val_flag_private;
   fx_result->val_flag_subarray = r_val_flag_subarray;
   fx_result->val_flag_instance = r_val_flag_instance;
   fx_result->val_flag_method = *r_val_flag_method;
   fx_result->val_flag_ctor = r_val_flag_ctor;
   FX_COPY_PTR(r_val_flag_global, &fx_result->val_flag_global);
}

static void _fx_free_R17C_form__cdefval_t(struct _fx_R17C_form__cdefval_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->cv_typ);
   fx_free_str(&dst->cv_cname);
   _fx_free_R16Ast__val_flags_t(&dst->cv_flags);
}

static void _fx_copy_R17C_form__cdefval_t(struct _fx_R17C_form__cdefval_t* src, struct _fx_R17C_form__cdefval_t* dst)
{
   dst->cv_name = src->cv_name;
   FX_COPY_PTR(src->cv_typ, &dst->cv_typ);
   fx_copy_str(&src->cv_cname, &dst->cv_cname);
   _fx_copy_R16Ast__val_flags_t(&src->cv_flags, &dst->cv_flags);
   dst->cv_loc = src->cv_loc;
}

static void _fx_make_R17C_form__cdefval_t(
   struct _fx_R9Ast__id_t* r_cv_name,
   struct _fx_N14C_form__ctyp_t_data_t* r_cv_typ,
   fx_str_t* r_cv_cname,
   struct _fx_R16Ast__val_flags_t* r_cv_flags,
   struct _fx_R10Ast__loc_t* r_cv_loc,
   struct _fx_R17C_form__cdefval_t* fx_result)
{
   fx_result->cv_name = *r_cv_name;
   FX_COPY_PTR(r_cv_typ, &fx_result->cv_typ);
   fx_copy_str(r_cv_cname, &fx_result->cv_cname);
   _fx_copy_R16Ast__val_flags_t(r_cv_flags, &fx_result->cv_flags);
   fx_result->cv_loc = *r_cv_loc;
}

static void _fx_free_R19C_form__cdeflabel_t(struct _fx_R19C_form__cdeflabel_t* dst)
{
   fx_free_str(&dst->cl_cname);
}

static void _fx_copy_R19C_form__cdeflabel_t(struct _fx_R19C_form__cdeflabel_t* src, struct _fx_R19C_form__cdeflabel_t* dst)
{
   dst->cl_name = src->cl_name;
   fx_copy_str(&src->cl_cname, &dst->cl_cname);
   dst->cl_loc = src->cl_loc;
}

static void _fx_make_R19C_form__cdeflabel_t(
   struct _fx_R9Ast__id_t* r_cl_name,
   fx_str_t* r_cl_cname,
   struct _fx_R10Ast__loc_t* r_cl_loc,
   struct _fx_R19C_form__cdeflabel_t* fx_result)
{
   fx_result->cl_name = *r_cl_name;
   fx_copy_str(r_cl_cname, &fx_result->cl_cname);
   fx_result->cl_loc = *r_cl_loc;
}

static void _fx_free_T2R9Ast__id_tN14C_form__ctyp_t(struct _fx_T2R9Ast__id_tN14C_form__ctyp_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tN14C_form__ctyp_t(
   struct _fx_T2R9Ast__id_tN14C_form__ctyp_t* src,
   struct _fx_T2R9Ast__id_tN14C_form__ctyp_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tN14C_form__ctyp_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_N14C_form__ctyp_t_data_t* t1,
   struct _fx_T2R9Ast__id_tN14C_form__ctyp_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2R9Ast__id_tN14C_form__ctyp_t, _fx_free_T2R9Ast__id_tN14C_form__ctyp_t);
}

static int _fx_cons_LT2R9Ast__id_tN14C_form__ctyp_t(
   struct _fx_T2R9Ast__id_tN14C_form__ctyp_t* hd,
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2R9Ast__id_tN14C_form__ctyp_t, _fx_copy_T2R9Ast__id_tN14C_form__ctyp_t);
}

static void _fx_free_R23C_form__cdefinterface_t(struct _fx_R23C_form__cdefinterface_t* dst)
{
   fx_free_str(&dst->ci_cname);
   _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&dst->ci_all_methods);
   fx_free_list_simple(&dst->ci_scope);
}

static void _fx_copy_R23C_form__cdefinterface_t(
   struct _fx_R23C_form__cdefinterface_t* src,
   struct _fx_R23C_form__cdefinterface_t* dst)
{
   dst->ci_name = src->ci_name;
   fx_copy_str(&src->ci_cname, &dst->ci_cname);
   dst->ci_id = src->ci_id;
   dst->ci_vtbl = src->ci_vtbl;
   dst->ci_base = src->ci_base;
   FX_COPY_PTR(src->ci_all_methods, &dst->ci_all_methods);
   FX_COPY_PTR(src->ci_scope, &dst->ci_scope);
   dst->ci_loc = src->ci_loc;
}

static void _fx_make_R23C_form__cdefinterface_t(
   struct _fx_R9Ast__id_t* r_ci_name,
   fx_str_t* r_ci_cname,
   struct _fx_R9Ast__id_t* r_ci_id,
   struct _fx_R9Ast__id_t* r_ci_vtbl,
   struct _fx_R9Ast__id_t* r_ci_base,
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* r_ci_all_methods,
   struct _fx_LN12Ast__scope_t_data_t* r_ci_scope,
   struct _fx_R10Ast__loc_t* r_ci_loc,
   struct _fx_R23C_form__cdefinterface_t* fx_result)
{
   fx_result->ci_name = *r_ci_name;
   fx_copy_str(r_ci_cname, &fx_result->ci_cname);
   fx_result->ci_id = *r_ci_id;
   fx_result->ci_vtbl = *r_ci_vtbl;
   fx_result->ci_base = *r_ci_base;
   FX_COPY_PTR(r_ci_all_methods, &fx_result->ci_all_methods);
   FX_COPY_PTR(r_ci_scope, &fx_result->ci_scope);
   fx_result->ci_loc = *r_ci_loc;
}

static void _fx_free_rR23C_form__cdefinterface_t(struct _fx_rR23C_form__cdefinterface_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR23C_form__cdefinterface_t, _fx_free_R23C_form__cdefinterface_t);
}

static int _fx_make_rR23C_form__cdefinterface_t(
   struct _fx_R23C_form__cdefinterface_t* arg,
   struct _fx_rR23C_form__cdefinterface_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR23C_form__cdefinterface_t, _fx_copy_R23C_form__cdefinterface_t);
}

static void _fx_free_LN15C_form__cstmt_t(struct _fx_LN15C_form__cstmt_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LN15C_form__cstmt_t, _fx_free_N15C_form__cstmt_t);
}

static int _fx_cons_LN15C_form__cstmt_t(
   struct _fx_N15C_form__cstmt_t_data_t* hd,
   struct _fx_LN15C_form__cstmt_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN15C_form__cstmt_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN15C_form__cstmt_t, FX_COPY_PTR);
}

static int _fx_cons_LN19C_form__carg_attr_t(
   struct _fx_N19C_form__carg_attr_t* hd,
   struct _fx_LN19C_form__carg_attr_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN19C_form__carg_attr_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN19C_form__carg_attr_t, FX_COPY_SIMPLE_BY_PTR);
}

static void _fx_free_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->t1);
   fx_free_list_simple(&dst->t2);
}

static void _fx_copy_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* src,
   struct _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
}

static void _fx_make_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_N14C_form__ctyp_t_data_t* t1,
   struct _fx_LN19C_form__carg_attr_t_data_t* t2,
   struct _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
}

static void _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t,
      _fx_free_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t);
}

static int _fx_cons_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* hd,
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t,
      _fx_copy_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t);
}

static void _fx_free_R17C_form__cdeffun_t(struct _fx_R17C_form__cdeffun_t* dst)
{
   fx_free_str(&dst->cf_cname);
   _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&dst->cf_args);
   _fx_free_N14C_form__ctyp_t(&dst->cf_rt);
   _fx_free_LN15C_form__cstmt_t(&dst->cf_body);
   fx_free_list_simple(&dst->cf_scope);
}

static void _fx_copy_R17C_form__cdeffun_t(struct _fx_R17C_form__cdeffun_t* src, struct _fx_R17C_form__cdeffun_t* dst)
{
   dst->cf_name = src->cf_name;
   fx_copy_str(&src->cf_cname, &dst->cf_cname);
   FX_COPY_PTR(src->cf_args, &dst->cf_args);
   FX_COPY_PTR(src->cf_rt, &dst->cf_rt);
   FX_COPY_PTR(src->cf_body, &dst->cf_body);
   dst->cf_flags = src->cf_flags;
   FX_COPY_PTR(src->cf_scope, &dst->cf_scope);
   dst->cf_loc = src->cf_loc;
}

static void _fx_make_R17C_form__cdeffun_t(
   struct _fx_R9Ast__id_t* r_cf_name,
   fx_str_t* r_cf_cname,
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t* r_cf_args,
   struct _fx_N14C_form__ctyp_t_data_t* r_cf_rt,
   struct _fx_LN15C_form__cstmt_t_data_t* r_cf_body,
   struct _fx_R16Ast__fun_flags_t* r_cf_flags,
   struct _fx_LN12Ast__scope_t_data_t* r_cf_scope,
   struct _fx_R10Ast__loc_t* r_cf_loc,
   struct _fx_R17C_form__cdeffun_t* fx_result)
{
   fx_result->cf_name = *r_cf_name;
   fx_copy_str(r_cf_cname, &fx_result->cf_cname);
   FX_COPY_PTR(r_cf_args, &fx_result->cf_args);
   FX_COPY_PTR(r_cf_rt, &fx_result->cf_rt);
   FX_COPY_PTR(r_cf_body, &fx_result->cf_body);
   fx_result->cf_flags = *r_cf_flags;
   FX_COPY_PTR(r_cf_scope, &fx_result->cf_scope);
   fx_result->cf_loc = *r_cf_loc;
}

static void _fx_free_rR17C_form__cdeffun_t(struct _fx_rR17C_form__cdeffun_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR17C_form__cdeffun_t, _fx_free_R17C_form__cdeffun_t);
}

static int _fx_make_rR17C_form__cdeffun_t(
   struct _fx_R17C_form__cdeffun_t* arg,
   struct _fx_rR17C_form__cdeffun_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR17C_form__cdeffun_t, _fx_copy_R17C_form__cdeffun_t);
}

static int _fx_cons_LR9Ast__id_t(
   struct _fx_R9Ast__id_t* hd,
   struct _fx_LR9Ast__id_t_data_t* tl,
   bool addref_tl,
   struct _fx_LR9Ast__id_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LR9Ast__id_t, FX_COPY_SIMPLE_BY_PTR);
}

static void _fx_free_R17C_form__ctprops_t(struct _fx_R17C_form__ctprops_t* dst)
{
   fx_free_list_simple(&dst->ctp_make);
}

static void _fx_copy_R17C_form__ctprops_t(struct _fx_R17C_form__ctprops_t* src, struct _fx_R17C_form__ctprops_t* dst)
{
   dst->ctp_scalar = src->ctp_scalar;
   dst->ctp_complex = src->ctp_complex;
   dst->ctp_ptr = src->ctp_ptr;
   dst->ctp_pass_by_ref = src->ctp_pass_by_ref;
   FX_COPY_PTR(src->ctp_make, &dst->ctp_make);
   dst->ctp_free = src->ctp_free;
   dst->ctp_copy = src->ctp_copy;
}

static void _fx_make_R17C_form__ctprops_t(
   bool r_ctp_scalar,
   bool r_ctp_complex,
   bool r_ctp_ptr,
   bool r_ctp_pass_by_ref,
   struct _fx_LR9Ast__id_t_data_t* r_ctp_make,
   struct _fx_Ta2R9Ast__id_t* r_ctp_free,
   struct _fx_Ta2R9Ast__id_t* r_ctp_copy,
   struct _fx_R17C_form__ctprops_t* fx_result)
{
   fx_result->ctp_scalar = r_ctp_scalar;
   fx_result->ctp_complex = r_ctp_complex;
   fx_result->ctp_ptr = r_ctp_ptr;
   fx_result->ctp_pass_by_ref = r_ctp_pass_by_ref;
   FX_COPY_PTR(r_ctp_make, &fx_result->ctp_make);
   fx_result->ctp_free = *r_ctp_free;
   fx_result->ctp_copy = *r_ctp_copy;
}

static void _fx_free_R17C_form__cdeftyp_t(struct _fx_R17C_form__cdeftyp_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->ct_typ);
   fx_free_str(&dst->ct_cname);
   _fx_free_R17C_form__ctprops_t(&dst->ct_props);
   fx_free_list_simple(&dst->ct_ifaces);
   fx_free_list_simple(&dst->ct_scope);
}

static void _fx_copy_R17C_form__cdeftyp_t(struct _fx_R17C_form__cdeftyp_t* src, struct _fx_R17C_form__cdeftyp_t* dst)
{
   dst->ct_name = src->ct_name;
   FX_COPY_PTR(src->ct_typ, &dst->ct_typ);
   fx_copy_str(&src->ct_cname, &dst->ct_cname);
   _fx_copy_R17C_form__ctprops_t(&src->ct_props, &dst->ct_props);
   dst->ct_data_start = src->ct_data_start;
   dst->ct_enum = src->ct_enum;
   FX_COPY_PTR(src->ct_ifaces, &dst->ct_ifaces);
   dst->ct_ifaces_id = src->ct_ifaces_id;
   FX_COPY_PTR(src->ct_scope, &dst->ct_scope);
   dst->ct_loc = src->ct_loc;
}

static void _fx_make_R17C_form__cdeftyp_t(
   struct _fx_R9Ast__id_t* r_ct_name,
   struct _fx_N14C_form__ctyp_t_data_t* r_ct_typ,
   fx_str_t* r_ct_cname,
   struct _fx_R17C_form__ctprops_t* r_ct_props,
   int_ r_ct_data_start,
   struct _fx_R9Ast__id_t* r_ct_enum,
   struct _fx_LR9Ast__id_t_data_t* r_ct_ifaces,
   struct _fx_R9Ast__id_t* r_ct_ifaces_id,
   struct _fx_LN12Ast__scope_t_data_t* r_ct_scope,
   struct _fx_R10Ast__loc_t* r_ct_loc,
   struct _fx_R17C_form__cdeftyp_t* fx_result)
{
   fx_result->ct_name = *r_ct_name;
   FX_COPY_PTR(r_ct_typ, &fx_result->ct_typ);
   fx_copy_str(r_ct_cname, &fx_result->ct_cname);
   _fx_copy_R17C_form__ctprops_t(r_ct_props, &fx_result->ct_props);
   fx_result->ct_data_start = r_ct_data_start;
   fx_result->ct_enum = *r_ct_enum;
   FX_COPY_PTR(r_ct_ifaces, &fx_result->ct_ifaces);
   fx_result->ct_ifaces_id = *r_ct_ifaces_id;
   FX_COPY_PTR(r_ct_scope, &fx_result->ct_scope);
   fx_result->ct_loc = *r_ct_loc;
}

static void _fx_free_rR17C_form__cdeftyp_t(struct _fx_rR17C_form__cdeftyp_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR17C_form__cdeftyp_t, _fx_free_R17C_form__cdeftyp_t);
}

static int _fx_make_rR17C_form__cdeftyp_t(
   struct _fx_R17C_form__cdeftyp_t* arg,
   struct _fx_rR17C_form__cdeftyp_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR17C_form__cdeftyp_t, _fx_copy_R17C_form__cdeftyp_t);
}

static void _fx_free_Nt6option1N14C_form__cexp_t(struct _fx_Nt6option1N14C_form__cexp_t* dst)
{
   switch (dst->tag) {
   case 2:
      _fx_free_N14C_form__cexp_t(&dst->u.Some); break;
   default:
      ;
   }
   dst->tag = 0;
}

static void _fx_copy_Nt6option1N14C_form__cexp_t(
   struct _fx_Nt6option1N14C_form__cexp_t* src,
   struct _fx_Nt6option1N14C_form__cexp_t* dst)
{
   dst->tag = src->tag;
   switch (src->tag) {
   case 2:
      FX_COPY_PTR(src->u.Some, &dst->u.Some); break;
   default:
      dst->u = src->u;
   }
}

static void _fx_free_T2R9Ast__id_tNt6option1N14C_form__cexp_t(struct _fx_T2R9Ast__id_tNt6option1N14C_form__cexp_t* dst)
{
   _fx_free_Nt6option1N14C_form__cexp_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tNt6option1N14C_form__cexp_t(
   struct _fx_T2R9Ast__id_tNt6option1N14C_form__cexp_t* src,
   struct _fx_T2R9Ast__id_tNt6option1N14C_form__cexp_t* dst)
{
   dst->t0 = src->t0;
   _fx_copy_Nt6option1N14C_form__cexp_t(&src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tNt6option1N14C_form__cexp_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_Nt6option1N14C_form__cexp_t* t1,
   struct _fx_T2R9Ast__id_tNt6option1N14C_form__cexp_t* fx_result)
{
   fx_result->t0 = *t0;
   _fx_copy_Nt6option1N14C_form__cexp_t(t1, &fx_result->t1);
}

static void _fx_free_LT2R9Ast__id_tNt6option1N14C_form__cexp_t(
   struct _fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t, _fx_free_T2R9Ast__id_tNt6option1N14C_form__cexp_t);
}

static int _fx_cons_LT2R9Ast__id_tNt6option1N14C_form__cexp_t(
   struct _fx_T2R9Ast__id_tNt6option1N14C_form__cexp_t* hd,
   struct _fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t, _fx_copy_T2R9Ast__id_tNt6option1N14C_form__cexp_t);
}

static void _fx_free_R18C_form__cdefenum_t(struct _fx_R18C_form__cdefenum_t* dst)
{
   _fx_free_LT2R9Ast__id_tNt6option1N14C_form__cexp_t(&dst->cenum_members);
   fx_free_str(&dst->cenum_cname);
   fx_free_list_simple(&dst->cenum_scope);
}

static void _fx_copy_R18C_form__cdefenum_t(struct _fx_R18C_form__cdefenum_t* src, struct _fx_R18C_form__cdefenum_t* dst)
{
   dst->cenum_name = src->cenum_name;
   FX_COPY_PTR(src->cenum_members, &dst->cenum_members);
   fx_copy_str(&src->cenum_cname, &dst->cenum_cname);
   FX_COPY_PTR(src->cenum_scope, &dst->cenum_scope);
   dst->cenum_loc = src->cenum_loc;
}

static void _fx_make_R18C_form__cdefenum_t(
   struct _fx_R9Ast__id_t* r_cenum_name,
   struct _fx_LT2R9Ast__id_tNt6option1N14C_form__cexp_t_data_t* r_cenum_members,
   fx_str_t* r_cenum_cname,
   struct _fx_LN12Ast__scope_t_data_t* r_cenum_scope,
   struct _fx_R10Ast__loc_t* r_cenum_loc,
   struct _fx_R18C_form__cdefenum_t* fx_result)
{
   fx_result->cenum_name = *r_cenum_name;
   FX_COPY_PTR(r_cenum_members, &fx_result->cenum_members);
   fx_copy_str(r_cenum_cname, &fx_result->cenum_cname);
   FX_COPY_PTR(r_cenum_scope, &fx_result->cenum_scope);
   fx_result->cenum_loc = *r_cenum_loc;
}

static void _fx_free_rR18C_form__cdefenum_t(struct _fx_rR18C_form__cdefenum_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR18C_form__cdefenum_t, _fx_free_R18C_form__cdefenum_t);
}

static int _fx_make_rR18C_form__cdefenum_t(
   struct _fx_R18C_form__cdefenum_t* arg,
   struct _fx_rR18C_form__cdefenum_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR18C_form__cdefenum_t, _fx_copy_R18C_form__cdefenum_t);
}

static void _fx_free_R19C_form__cdefmacro_t(struct _fx_R19C_form__cdefmacro_t* dst)
{
   fx_free_str(&dst->cm_cname);
   fx_free_list_simple(&dst->cm_args);
   _fx_free_LN15C_form__cstmt_t(&dst->cm_body);
   fx_free_list_simple(&dst->cm_scope);
}

static void _fx_copy_R19C_form__cdefmacro_t(struct _fx_R19C_form__cdefmacro_t* src, struct _fx_R19C_form__cdefmacro_t* dst)
{
   dst->cm_name = src->cm_name;
   fx_copy_str(&src->cm_cname, &dst->cm_cname);
   FX_COPY_PTR(src->cm_args, &dst->cm_args);
   FX_COPY_PTR(src->cm_body, &dst->cm_body);
   FX_COPY_PTR(src->cm_scope, &dst->cm_scope);
   dst->cm_loc = src->cm_loc;
}

static void _fx_make_R19C_form__cdefmacro_t(
   struct _fx_R9Ast__id_t* r_cm_name,
   fx_str_t* r_cm_cname,
   struct _fx_LR9Ast__id_t_data_t* r_cm_args,
   struct _fx_LN15C_form__cstmt_t_data_t* r_cm_body,
   struct _fx_LN12Ast__scope_t_data_t* r_cm_scope,
   struct _fx_R10Ast__loc_t* r_cm_loc,
   struct _fx_R19C_form__cdefmacro_t* fx_result)
{
   fx_result->cm_name = *r_cm_name;
   fx_copy_str(r_cm_cname, &fx_result->cm_cname);
   FX_COPY_PTR(r_cm_args, &fx_result->cm_args);
   FX_COPY_PTR(r_cm_body, &fx_result->cm_body);
   FX_COPY_PTR(r_cm_scope, &fx_result->cm_scope);
   fx_result->cm_loc = *r_cm_loc;
}

static void _fx_free_rR19C_form__cdefmacro_t(struct _fx_rR19C_form__cdefmacro_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR19C_form__cdefmacro_t, _fx_free_R19C_form__cdefmacro_t);
}

static int _fx_make_rR19C_form__cdefmacro_t(
   struct _fx_R19C_form__cdefmacro_t* arg,
   struct _fx_rR19C_form__cdefmacro_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR19C_form__cdefmacro_t, _fx_copy_R19C_form__cdefmacro_t);
}

static void _fx_free_R17C_form__cdefexn_t(struct _fx_R17C_form__cdefexn_t* dst)
{
   fx_free_str(&dst->cexn_cname);
   fx_free_str(&dst->cexn_base_cname);
   _fx_free_N14C_form__ctyp_t(&dst->cexn_typ);
   fx_free_list_simple(&dst->cexn_scope);
}

static void _fx_copy_R17C_form__cdefexn_t(struct _fx_R17C_form__cdefexn_t* src, struct _fx_R17C_form__cdefexn_t* dst)
{
   dst->cexn_name = src->cexn_name;
   fx_copy_str(&src->cexn_cname, &dst->cexn_cname);
   fx_copy_str(&src->cexn_base_cname, &dst->cexn_base_cname);
   FX_COPY_PTR(src->cexn_typ, &dst->cexn_typ);
   dst->cexn_std = src->cexn_std;
   dst->cexn_tag = src->cexn_tag;
   dst->cexn_data = src->cexn_data;
   dst->cexn_info = src->cexn_info;
   dst->cexn_make = src->cexn_make;
   FX_COPY_PTR(src->cexn_scope, &dst->cexn_scope);
   dst->cexn_loc = src->cexn_loc;
}

static void _fx_make_R17C_form__cdefexn_t(
   struct _fx_R9Ast__id_t* r_cexn_name,
   fx_str_t* r_cexn_cname,
   fx_str_t* r_cexn_base_cname,
   struct _fx_N14C_form__ctyp_t_data_t* r_cexn_typ,
   bool r_cexn_std,
   struct _fx_R9Ast__id_t* r_cexn_tag,
   struct _fx_R9Ast__id_t* r_cexn_data,
   struct _fx_R9Ast__id_t* r_cexn_info,
   struct _fx_R9Ast__id_t* r_cexn_make,
   struct _fx_LN12Ast__scope_t_data_t* r_cexn_scope,
   struct _fx_R10Ast__loc_t* r_cexn_loc,
   struct _fx_R17C_form__cdefexn_t* fx_result)
{
   fx_result->cexn_name = *r_cexn_name;
   fx_copy_str(r_cexn_cname, &fx_result->cexn_cname);
   fx_copy_str(r_cexn_base_cname, &fx_result->cexn_base_cname);
   FX_COPY_PTR(r_cexn_typ, &fx_result->cexn_typ);
   fx_result->cexn_std = r_cexn_std;
   fx_result->cexn_tag = *r_cexn_tag;
   fx_result->cexn_data = *r_cexn_data;
   fx_result->cexn_info = *r_cexn_info;
   fx_result->cexn_make = *r_cexn_make;
   FX_COPY_PTR(r_cexn_scope, &fx_result->cexn_scope);
   fx_result->cexn_loc = *r_cexn_loc;
}

static void _fx_free_rR17C_form__cdefexn_t(struct _fx_rR17C_form__cdefexn_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR17C_form__cdefexn_t, _fx_free_R17C_form__cdefexn_t);
}

static int _fx_make_rR17C_form__cdefexn_t(
   struct _fx_R17C_form__cdefexn_t* arg,
   struct _fx_rR17C_form__cdefexn_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR17C_form__cdefexn_t, _fx_copy_R17C_form__cdefexn_t);
}

static void _fx_free_N15C_form__cinfo_t(struct _fx_N15C_form__cinfo_t* dst)
{
   switch (dst->tag) {
   case 2:
      _fx_free_R17C_form__cdefval_t(&dst->u.CVal); break;
   case 3:
      _fx_free_rR17C_form__cdeffun_t(&dst->u.CFun); break;
   case 4:
      _fx_free_rR17C_form__cdeftyp_t(&dst->u.CTyp); break;
   case 5:
      _fx_free_rR17C_form__cdefexn_t(&dst->u.CExn); break;
   case 6:
      _fx_free_rR23C_form__cdefinterface_t(&dst->u.CInterface); break;
   case 7:
      _fx_free_rR18C_form__cdefenum_t(&dst->u.CEnum); break;
   case 8:
      _fx_free_R19C_form__cdeflabel_t(&dst->u.CLabel); break;
   case 9:
      _fx_free_rR19C_form__cdefmacro_t(&dst->u.CMacro); break;
   default:
      ;
   }
   dst->tag = 0;
}

static void _fx_copy_N15C_form__cinfo_t(struct _fx_N15C_form__cinfo_t* src, struct _fx_N15C_form__cinfo_t* dst)
{
   dst->tag = src->tag;
   switch (src->tag) {
   case 2:
      _fx_copy_R17C_form__cdefval_t(&src->u.CVal, &dst->u.CVal); break;
   case 3:
      FX_COPY_PTR(src->u.CFun, &dst->u.CFun); break;
   case 4:
      FX_COPY_PTR(src->u.CTyp, &dst->u.CTyp); break;
   case 5:
      FX_COPY_PTR(src->u.CExn, &dst->u.CExn); break;
   case 6:
      FX_COPY_PTR(src->u.CInterface, &dst->u.CInterface); break;
   case 7:
      FX_COPY_PTR(src->u.CEnum, &dst->u.CEnum); break;
   case 8:
      _fx_copy_R19C_form__cdeflabel_t(&src->u.CLabel, &dst->u.CLabel); break;
   case 9:
      FX_COPY_PTR(src->u.CMacro, &dst->u.CMacro); break;
   default:
      dst->u = src->u;
   }
}

static void _fx_free_R17K_form__kdefval_t(struct _fx_R17K_form__kdefval_t* dst)
{
   fx_free_str(&dst->kv_cname);
   _fx_free_N14K_form__ktyp_t(&dst->kv_typ);
   _fx_free_R16Ast__val_flags_t(&dst->kv_flags);
}

static void _fx_copy_R17K_form__kdefval_t(struct _fx_R17K_form__kdefval_t* src, struct _fx_R17K_form__kdefval_t* dst)
{
   dst->kv_name = src->kv_name;
   fx_copy_str(&src->kv_cname, &dst->kv_cname);
   FX_COPY_PTR(src->kv_typ, &dst->kv_typ);
   _fx_copy_R16Ast__val_flags_t(&src->kv_flags, &dst->kv_flags);
   dst->kv_loc = src->kv_loc;
}

static void _fx_make_R17K_form__kdefval_t(
   struct _fx_R9Ast__id_t* r_kv_name,
   fx_str_t* r_kv_cname,
   struct _fx_N14K_form__ktyp_t_data_t* r_kv_typ,
   struct _fx_R16Ast__val_flags_t* r_kv_flags,
   struct _fx_R10Ast__loc_t* r_kv_loc,
   struct _fx_R17K_form__kdefval_t* fx_result)
{
   fx_result->kv_name = *r_kv_name;
   fx_copy_str(r_kv_cname, &fx_result->kv_cname);
   FX_COPY_PTR(r_kv_typ, &fx_result->kv_typ);
   _fx_copy_R16Ast__val_flags_t(r_kv_flags, &fx_result->kv_flags);
   fx_result->kv_loc = *r_kv_loc;
}

static void _fx_free_T2R9Ast__id_tN14K_form__ktyp_t(struct _fx_T2R9Ast__id_tN14K_form__ktyp_t* dst)
{
   _fx_free_N14K_form__ktyp_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tN14K_form__ktyp_t(
   struct _fx_T2R9Ast__id_tN14K_form__ktyp_t* src,
   struct _fx_T2R9Ast__id_tN14K_form__ktyp_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tN14K_form__ktyp_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_N14K_form__ktyp_t_data_t* t1,
   struct _fx_T2R9Ast__id_tN14K_form__ktyp_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_LT2R9Ast__id_tN14K_form__ktyp_t(struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2R9Ast__id_tN14K_form__ktyp_t, _fx_free_T2R9Ast__id_tN14K_form__ktyp_t);
}

static int _fx_cons_LT2R9Ast__id_tN14K_form__ktyp_t(
   struct _fx_T2R9Ast__id_tN14K_form__ktyp_t* hd,
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2R9Ast__id_tN14K_form__ktyp_t, _fx_copy_T2R9Ast__id_tN14K_form__ktyp_t);
}

static void _fx_free_R23K_form__kdefinterface_t(struct _fx_R23K_form__kdefinterface_t* dst)
{
   fx_free_str(&dst->ki_cname);
   _fx_free_LT2R9Ast__id_tN14K_form__ktyp_t(&dst->ki_all_methods);
   fx_free_list_simple(&dst->ki_scope);
}

static void _fx_copy_R23K_form__kdefinterface_t(
   struct _fx_R23K_form__kdefinterface_t* src,
   struct _fx_R23K_form__kdefinterface_t* dst)
{
   dst->ki_name = src->ki_name;
   dst->ki_base = src->ki_base;
   fx_copy_str(&src->ki_cname, &dst->ki_cname);
   dst->ki_id = src->ki_id;
   FX_COPY_PTR(src->ki_all_methods, &dst->ki_all_methods);
   FX_COPY_PTR(src->ki_scope, &dst->ki_scope);
   dst->ki_loc = src->ki_loc;
}

static void _fx_make_R23K_form__kdefinterface_t(
   struct _fx_R9Ast__id_t* r_ki_name,
   struct _fx_R9Ast__id_t* r_ki_base,
   fx_str_t* r_ki_cname,
   struct _fx_R9Ast__id_t* r_ki_id,
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* r_ki_all_methods,
   struct _fx_LN12Ast__scope_t_data_t* r_ki_scope,
   struct _fx_R10Ast__loc_t* r_ki_loc,
   struct _fx_R23K_form__kdefinterface_t* fx_result)
{
   fx_result->ki_name = *r_ki_name;
   fx_result->ki_base = *r_ki_base;
   fx_copy_str(r_ki_cname, &fx_result->ki_cname);
   fx_result->ki_id = *r_ki_id;
   FX_COPY_PTR(r_ki_all_methods, &fx_result->ki_all_methods);
   FX_COPY_PTR(r_ki_scope, &fx_result->ki_scope);
   fx_result->ki_loc = *r_ki_loc;
}

static void _fx_free_rR23K_form__kdefinterface_t(struct _fx_rR23K_form__kdefinterface_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR23K_form__kdefinterface_t, _fx_free_R23K_form__kdefinterface_t);
}

static int _fx_make_rR23K_form__kdefinterface_t(
   struct _fx_R23K_form__kdefinterface_t* arg,
   struct _fx_rR23K_form__kdefinterface_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR23K_form__kdefinterface_t, _fx_copy_R23K_form__kdefinterface_t);
}

static void _fx_free_R17K_form__kdeffun_t(struct _fx_R17K_form__kdeffun_t* dst)
{
   fx_free_str(&dst->kf_cname);
   fx_free_list_simple(&dst->kf_params);
   _fx_free_N14K_form__ktyp_t(&dst->kf_rt);
   _fx_free_N14K_form__kexp_t(&dst->kf_body);
   fx_free_list_simple(&dst->kf_scope);
}

static void _fx_copy_R17K_form__kdeffun_t(struct _fx_R17K_form__kdeffun_t* src, struct _fx_R17K_form__kdeffun_t* dst)
{
   dst->kf_name = src->kf_name;
   fx_copy_str(&src->kf_cname, &dst->kf_cname);
   FX_COPY_PTR(src->kf_params, &dst->kf_params);
   FX_COPY_PTR(src->kf_rt, &dst->kf_rt);
   FX_COPY_PTR(src->kf_body, &dst->kf_body);
   dst->kf_flags = src->kf_flags;
   dst->kf_closure = src->kf_closure;
   FX_COPY_PTR(src->kf_scope, &dst->kf_scope);
   dst->kf_loc = src->kf_loc;
}

static void _fx_make_R17K_form__kdeffun_t(
   struct _fx_R9Ast__id_t* r_kf_name,
   fx_str_t* r_kf_cname,
   struct _fx_LR9Ast__id_t_data_t* r_kf_params,
   struct _fx_N14K_form__ktyp_t_data_t* r_kf_rt,
   struct _fx_N14K_form__kexp_t_data_t* r_kf_body,
   struct _fx_R16Ast__fun_flags_t* r_kf_flags,
   struct _fx_R25K_form__kdefclosureinfo_t* r_kf_closure,
   struct _fx_LN12Ast__scope_t_data_t* r_kf_scope,
   struct _fx_R10Ast__loc_t* r_kf_loc,
   struct _fx_R17K_form__kdeffun_t* fx_result)
{
   fx_result->kf_name = *r_kf_name;
   fx_copy_str(r_kf_cname, &fx_result->kf_cname);
   FX_COPY_PTR(r_kf_params, &fx_result->kf_params);
   FX_COPY_PTR(r_kf_rt, &fx_result->kf_rt);
   FX_COPY_PTR(r_kf_body, &fx_result->kf_body);
   fx_result->kf_flags = *r_kf_flags;
   fx_result->kf_closure = *r_kf_closure;
   FX_COPY_PTR(r_kf_scope, &fx_result->kf_scope);
   fx_result->kf_loc = *r_kf_loc;
}

static void _fx_free_rR17K_form__kdeffun_t(struct _fx_rR17K_form__kdeffun_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR17K_form__kdeffun_t, _fx_free_R17K_form__kdeffun_t);
}

static int _fx_make_rR17K_form__kdeffun_t(
   struct _fx_R17K_form__kdeffun_t* arg,
   struct _fx_rR17K_form__kdeffun_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR17K_form__kdeffun_t, _fx_copy_R17K_form__kdeffun_t);
}

static void _fx_free_R17K_form__kdefexn_t(struct _fx_R17K_form__kdefexn_t* dst)
{
   fx_free_str(&dst->ke_cname);
   fx_free_str(&dst->ke_base_cname);
   _fx_free_N14K_form__ktyp_t(&dst->ke_typ);
   fx_free_list_simple(&dst->ke_scope);
}

static void _fx_copy_R17K_form__kdefexn_t(struct _fx_R17K_form__kdefexn_t* src, struct _fx_R17K_form__kdefexn_t* dst)
{
   dst->ke_name = src->ke_name;
   fx_copy_str(&src->ke_cname, &dst->ke_cname);
   fx_copy_str(&src->ke_base_cname, &dst->ke_base_cname);
   FX_COPY_PTR(src->ke_typ, &dst->ke_typ);
   dst->ke_std = src->ke_std;
   dst->ke_tag = src->ke_tag;
   dst->ke_make = src->ke_make;
   FX_COPY_PTR(src->ke_scope, &dst->ke_scope);
   dst->ke_loc = src->ke_loc;
}

static void _fx_make_R17K_form__kdefexn_t(
   struct _fx_R9Ast__id_t* r_ke_name,
   fx_str_t* r_ke_cname,
   fx_str_t* r_ke_base_cname,
   struct _fx_N14K_form__ktyp_t_data_t* r_ke_typ,
   bool r_ke_std,
   struct _fx_R9Ast__id_t* r_ke_tag,
   struct _fx_R9Ast__id_t* r_ke_make,
   struct _fx_LN12Ast__scope_t_data_t* r_ke_scope,
   struct _fx_R10Ast__loc_t* r_ke_loc,
   struct _fx_R17K_form__kdefexn_t* fx_result)
{
   fx_result->ke_name = *r_ke_name;
   fx_copy_str(r_ke_cname, &fx_result->ke_cname);
   fx_copy_str(r_ke_base_cname, &fx_result->ke_base_cname);
   FX_COPY_PTR(r_ke_typ, &fx_result->ke_typ);
   fx_result->ke_std = r_ke_std;
   fx_result->ke_tag = *r_ke_tag;
   fx_result->ke_make = *r_ke_make;
   FX_COPY_PTR(r_ke_scope, &fx_result->ke_scope);
   fx_result->ke_loc = *r_ke_loc;
}

static void _fx_free_rR17K_form__kdefexn_t(struct _fx_rR17K_form__kdefexn_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR17K_form__kdefexn_t, _fx_free_R17K_form__kdefexn_t);
}

static int _fx_make_rR17K_form__kdefexn_t(
   struct _fx_R17K_form__kdefexn_t* arg,
   struct _fx_rR17K_form__kdefexn_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR17K_form__kdefexn_t, _fx_copy_R17K_form__kdefexn_t);
}

static void _fx_free_LN14K_form__ktyp_t(struct _fx_LN14K_form__ktyp_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LN14K_form__ktyp_t, _fx_free_N14K_form__ktyp_t);
}

static int _fx_cons_LN14K_form__ktyp_t(
   struct _fx_N14K_form__ktyp_t_data_t* hd,
   struct _fx_LN14K_form__ktyp_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN14K_form__ktyp_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN14K_form__ktyp_t, FX_COPY_PTR);
}

static void _fx_free_T2R9Ast__id_tLR9Ast__id_t(struct _fx_T2R9Ast__id_tLR9Ast__id_t* dst)
{
   fx_free_list_simple(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tLR9Ast__id_t(
   struct _fx_T2R9Ast__id_tLR9Ast__id_t* src,
   struct _fx_T2R9Ast__id_tLR9Ast__id_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tLR9Ast__id_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_LR9Ast__id_t_data_t* t1,
   struct _fx_T2R9Ast__id_tLR9Ast__id_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_LT2R9Ast__id_tLR9Ast__id_t(struct _fx_LT2R9Ast__id_tLR9Ast__id_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2R9Ast__id_tLR9Ast__id_t, _fx_free_T2R9Ast__id_tLR9Ast__id_t);
}

static int _fx_cons_LT2R9Ast__id_tLR9Ast__id_t(
   struct _fx_T2R9Ast__id_tLR9Ast__id_t* hd,
   struct _fx_LT2R9Ast__id_tLR9Ast__id_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2R9Ast__id_tLR9Ast__id_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2R9Ast__id_tLR9Ast__id_t, _fx_copy_T2R9Ast__id_tLR9Ast__id_t);
}

static void _fx_free_R21K_form__kdefvariant_t(struct _fx_R21K_form__kdefvariant_t* dst)
{
   fx_free_str(&dst->kvar_cname);
   _fx_free_LN14K_form__ktyp_t(&dst->kvar_targs);
   _fx_free_LT2R9Ast__id_tN14K_form__ktyp_t(&dst->kvar_cases);
   fx_free_list_simple(&dst->kvar_ctors);
   _fx_free_LT2R9Ast__id_tLR9Ast__id_t(&dst->kvar_ifaces);
   fx_free_list_simple(&dst->kvar_scope);
}

static void _fx_copy_R21K_form__kdefvariant_t(
   struct _fx_R21K_form__kdefvariant_t* src,
   struct _fx_R21K_form__kdefvariant_t* dst)
{
   dst->kvar_name = src->kvar_name;
   fx_copy_str(&src->kvar_cname, &dst->kvar_cname);
   dst->kvar_proto = src->kvar_proto;
   dst->kvar_props = src->kvar_props;
   FX_COPY_PTR(src->kvar_targs, &dst->kvar_targs);
   FX_COPY_PTR(src->kvar_cases, &dst->kvar_cases);
   FX_COPY_PTR(src->kvar_ctors, &dst->kvar_ctors);
   dst->kvar_flags = src->kvar_flags;
   FX_COPY_PTR(src->kvar_ifaces, &dst->kvar_ifaces);
   FX_COPY_PTR(src->kvar_scope, &dst->kvar_scope);
   dst->kvar_loc = src->kvar_loc;
}

static void _fx_make_R21K_form__kdefvariant_t(
   struct _fx_R9Ast__id_t* r_kvar_name,
   fx_str_t* r_kvar_cname,
   struct _fx_R9Ast__id_t* r_kvar_proto,
   struct _fx_Nt6option1R17K_form__ktprops_t* r_kvar_props,
   struct _fx_LN14K_form__ktyp_t_data_t* r_kvar_targs,
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* r_kvar_cases,
   struct _fx_LR9Ast__id_t_data_t* r_kvar_ctors,
   struct _fx_R16Ast__var_flags_t* r_kvar_flags,
   struct _fx_LT2R9Ast__id_tLR9Ast__id_t_data_t* r_kvar_ifaces,
   struct _fx_LN12Ast__scope_t_data_t* r_kvar_scope,
   struct _fx_R10Ast__loc_t* r_kvar_loc,
   struct _fx_R21K_form__kdefvariant_t* fx_result)
{
   fx_result->kvar_name = *r_kvar_name;
   fx_copy_str(r_kvar_cname, &fx_result->kvar_cname);
   fx_result->kvar_proto = *r_kvar_proto;
   fx_result->kvar_props = *r_kvar_props;
   FX_COPY_PTR(r_kvar_targs, &fx_result->kvar_targs);
   FX_COPY_PTR(r_kvar_cases, &fx_result->kvar_cases);
   FX_COPY_PTR(r_kvar_ctors, &fx_result->kvar_ctors);
   fx_result->kvar_flags = *r_kvar_flags;
   FX_COPY_PTR(r_kvar_ifaces, &fx_result->kvar_ifaces);
   FX_COPY_PTR(r_kvar_scope, &fx_result->kvar_scope);
   fx_result->kvar_loc = *r_kvar_loc;
}

static void _fx_free_rR21K_form__kdefvariant_t(struct _fx_rR21K_form__kdefvariant_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR21K_form__kdefvariant_t, _fx_free_R21K_form__kdefvariant_t);
}

static int _fx_make_rR21K_form__kdefvariant_t(
   struct _fx_R21K_form__kdefvariant_t* arg,
   struct _fx_rR21K_form__kdefvariant_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR21K_form__kdefvariant_t, _fx_copy_R21K_form__kdefvariant_t);
}

static void _fx_free_R17K_form__kdeftyp_t(struct _fx_R17K_form__kdeftyp_t* dst)
{
   fx_free_str(&dst->kt_cname);
   _fx_free_LN14K_form__ktyp_t(&dst->kt_targs);
   _fx_free_N14K_form__ktyp_t(&dst->kt_typ);
   fx_free_list_simple(&dst->kt_scope);
}

static void _fx_copy_R17K_form__kdeftyp_t(struct _fx_R17K_form__kdeftyp_t* src, struct _fx_R17K_form__kdeftyp_t* dst)
{
   dst->kt_name = src->kt_name;
   fx_copy_str(&src->kt_cname, &dst->kt_cname);
   dst->kt_proto = src->kt_proto;
   dst->kt_props = src->kt_props;
   FX_COPY_PTR(src->kt_targs, &dst->kt_targs);
   FX_COPY_PTR(src->kt_typ, &dst->kt_typ);
   FX_COPY_PTR(src->kt_scope, &dst->kt_scope);
   dst->kt_loc = src->kt_loc;
}

static void _fx_make_R17K_form__kdeftyp_t(
   struct _fx_R9Ast__id_t* r_kt_name,
   fx_str_t* r_kt_cname,
   struct _fx_R9Ast__id_t* r_kt_proto,
   struct _fx_Nt6option1R17K_form__ktprops_t* r_kt_props,
   struct _fx_LN14K_form__ktyp_t_data_t* r_kt_targs,
   struct _fx_N14K_form__ktyp_t_data_t* r_kt_typ,
   struct _fx_LN12Ast__scope_t_data_t* r_kt_scope,
   struct _fx_R10Ast__loc_t* r_kt_loc,
   struct _fx_R17K_form__kdeftyp_t* fx_result)
{
   fx_result->kt_name = *r_kt_name;
   fx_copy_str(r_kt_cname, &fx_result->kt_cname);
   fx_result->kt_proto = *r_kt_proto;
   fx_result->kt_props = *r_kt_props;
   FX_COPY_PTR(r_kt_targs, &fx_result->kt_targs);
   FX_COPY_PTR(r_kt_typ, &fx_result->kt_typ);
   FX_COPY_PTR(r_kt_scope, &fx_result->kt_scope);
   fx_result->kt_loc = *r_kt_loc;
}

static void _fx_free_rR17K_form__kdeftyp_t(struct _fx_rR17K_form__kdeftyp_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR17K_form__kdeftyp_t, _fx_free_R17K_form__kdeftyp_t);
}

static int _fx_make_rR17K_form__kdeftyp_t(
   struct _fx_R17K_form__kdeftyp_t* arg,
   struct _fx_rR17K_form__kdeftyp_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR17K_form__kdeftyp_t, _fx_copy_R17K_form__kdeftyp_t);
}

static void _fx_free_R25K_form__kdefclosurevars_t(struct _fx_R25K_form__kdefclosurevars_t* dst)
{
   fx_free_str(&dst->kcv_cname);
   _fx_free_LT2R9Ast__id_tN14K_form__ktyp_t(&dst->kcv_freevars);
   fx_free_list_simple(&dst->kcv_orig_freevars);
   fx_free_list_simple(&dst->kcv_scope);
}

static void _fx_copy_R25K_form__kdefclosurevars_t(
   struct _fx_R25K_form__kdefclosurevars_t* src,
   struct _fx_R25K_form__kdefclosurevars_t* dst)
{
   dst->kcv_name = src->kcv_name;
   fx_copy_str(&src->kcv_cname, &dst->kcv_cname);
   FX_COPY_PTR(src->kcv_freevars, &dst->kcv_freevars);
   FX_COPY_PTR(src->kcv_orig_freevars, &dst->kcv_orig_freevars);
   FX_COPY_PTR(src->kcv_scope, &dst->kcv_scope);
   dst->kcv_loc = src->kcv_loc;
}

static void _fx_make_R25K_form__kdefclosurevars_t(
   struct _fx_R9Ast__id_t* r_kcv_name,
   fx_str_t* r_kcv_cname,
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* r_kcv_freevars,
   struct _fx_LR9Ast__id_t_data_t* r_kcv_orig_freevars,
   struct _fx_LN12Ast__scope_t_data_t* r_kcv_scope,
   struct _fx_R10Ast__loc_t* r_kcv_loc,
   struct _fx_R25K_form__kdefclosurevars_t* fx_result)
{
   fx_result->kcv_name = *r_kcv_name;
   fx_copy_str(r_kcv_cname, &fx_result->kcv_cname);
   FX_COPY_PTR(r_kcv_freevars, &fx_result->kcv_freevars);
   FX_COPY_PTR(r_kcv_orig_freevars, &fx_result->kcv_orig_freevars);
   FX_COPY_PTR(r_kcv_scope, &fx_result->kcv_scope);
   fx_result->kcv_loc = *r_kcv_loc;
}

static void _fx_free_rR25K_form__kdefclosurevars_t(struct _fx_rR25K_form__kdefclosurevars_t_data_t** dst)
{
   FX_FREE_REF_IMPL(_fx_rR25K_form__kdefclosurevars_t, _fx_free_R25K_form__kdefclosurevars_t);
}

static int _fx_make_rR25K_form__kdefclosurevars_t(
   struct _fx_R25K_form__kdefclosurevars_t* arg,
   struct _fx_rR25K_form__kdefclosurevars_t_data_t** fx_result)
{
   FX_MAKE_REF_IMPL(_fx_rR25K_form__kdefclosurevars_t, _fx_copy_R25K_form__kdefclosurevars_t);
}

static void _fx_free_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
   struct _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* dst)
{
   _fx_free_Nt11Set__tree_t1R9Ast__id_t(&dst->t1);
   _fx_free_Nt11Set__tree_t1R9Ast__id_t(&dst->t3);
}

static void _fx_copy_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
   struct _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* src,
   struct _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
   FX_COPY_PTR(src->t3, &dst->t3);
}

static void _fx_make_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
   struct _fx_N12Set__color_t* t0,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t1,
   struct _fx_R9Ast__id_t* t2,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t3,
   struct _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
   FX_COPY_PTR(t3, &fx_result->t3);
}

static void _fx_free_Nt11Set__tree_t1R9Ast__id_t(struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t** dst)
{
   if (*dst && FX_DECREF((*dst)->rc) == 1) {
      _fx_free_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(&(*dst)->u.Node);
      fx_free(*dst);
   }
   *dst = 0;
}

static void _fx_free_Rt6Set__t1R9Ast__id_t(struct _fx_Rt6Set__t1R9Ast__id_t* dst)
{
   _fx_free_Nt11Set__tree_t1R9Ast__id_t(&dst->root);
   fx_free_fp(&dst->cmp);
}

static void _fx_copy_Rt6Set__t1R9Ast__id_t(struct _fx_Rt6Set__t1R9Ast__id_t* src, struct _fx_Rt6Set__t1R9Ast__id_t* dst)
{
   FX_COPY_PTR(src->root, &dst->root);
   dst->size = src->size;
   FX_COPY_FP(&src->cmp, &dst->cmp);
}

static void _fx_make_Rt6Set__t1R9Ast__id_t(
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* r_root,
   int_ r_size,
   struct _fx_FPi2R9Ast__id_tR9Ast__id_t* r_cmp,
   struct _fx_Rt6Set__t1R9Ast__id_t* fx_result)
{
   FX_COPY_PTR(r_root, &fx_result->root);
   fx_result->size = r_size;
   FX_COPY_FP(r_cmp, &fx_result->cmp);
}

static void _fx_free_T2R10Ast__loc_tS(struct _fx_T2R10Ast__loc_tS* dst)
{
   fx_free_str(&dst->t1);
}

static void _fx_copy_T2R10Ast__loc_tS(struct _fx_T2R10Ast__loc_tS* src, struct _fx_T2R10Ast__loc_tS* dst)
{
   dst->t0 = src->t0;
   fx_copy_str(&src->t1, &dst->t1);
}

static void _fx_make_T2R10Ast__loc_tS(struct _fx_R10Ast__loc_t* t0, fx_str_t* t1, struct _fx_T2R10Ast__loc_tS* fx_result)
{
   fx_result->t0 = *t0;
   fx_copy_str(t1, &fx_result->t1);
}

static void _fx_free_N13Ast__binary_t(struct _fx_N13Ast__binary_t_data_t** dst)
{
   if (*dst && FX_DECREF((*dst)->rc) == 1) {
      switch ((*dst)->tag) {
      case 27:
         _fx_free_N13Ast__binary_t(&(*dst)->u.OpAugBinary); break;
      default:
         ;
      }
      fx_free(*dst);
   }
   *dst = 0;
}

static void _fx_free_Nt6option1rR23K_form__kdefinterface_t(struct _fx_Nt6option1rR23K_form__kdefinterface_t* dst)
{
   switch (dst->tag) {
   case 2:
      _fx_free_rR23K_form__kdefinterface_t(&dst->u.Some); break;
   default:
      ;
   }
   dst->tag = 0;
}

static void _fx_copy_Nt6option1rR23K_form__kdefinterface_t(
   struct _fx_Nt6option1rR23K_form__kdefinterface_t* src,
   struct _fx_Nt6option1rR23K_form__kdefinterface_t* dst)
{
   dst->tag = src->tag;
   switch (src->tag) {
   case 2:
      FX_COPY_PTR(src->u.Some, &dst->u.Some); break;
   default:
      dst->u = src->u;
   }
}

static void _fx_free_N14K_form__klit_t(struct _fx_N14K_form__klit_t* dst)
{
   switch (dst->tag) {
   case 5:
      fx_free_str(&dst->u.KLitString); break;
   case 8:
      _fx_free_N14K_form__ktyp_t(&dst->u.KLitNil); break;
   default:
      ;
   }
   dst->tag = 0;
}

static void _fx_copy_N14K_form__klit_t(struct _fx_N14K_form__klit_t* src, struct _fx_N14K_form__klit_t* dst)
{
   dst->tag = src->tag;
   switch (src->tag) {
   case 5:
      fx_copy_str(&src->u.KLitString, &dst->u.KLitString); break;
   case 8:
      FX_COPY_PTR(src->u.KLitNil, &dst->u.KLitNil); break;
   default:
      dst->u = src->u;
   }
}

static void _fx_free_N14K_form__atom_t(struct _fx_N14K_form__atom_t* dst)
{
   switch (dst->tag) {
   case 2:
      _fx_free_N14K_form__klit_t(&dst->u.AtomLit); break;
   default:
      ;
   }
   dst->tag = 0;
}

static void _fx_copy_N14K_form__atom_t(struct _fx_N14K_form__atom_t* src, struct _fx_N14K_form__atom_t* dst)
{
   dst->tag = src->tag;
   switch (src->tag) {
   case 2:
      _fx_copy_N14K_form__klit_t(&src->u.AtomLit, &dst->u.AtomLit); break;
   default:
      dst->u = src->u;
   }
}

static void _fx_free_Nt6option1N14K_form__atom_t(struct _fx_Nt6option1N14K_form__atom_t* dst)
{
   switch (dst->tag) {
   case 2:
      _fx_free_N14K_form__atom_t(&dst->u.Some); break;
   default:
      ;
   }
   dst->tag = 0;
}

static void _fx_copy_Nt6option1N14K_form__atom_t(
   struct _fx_Nt6option1N14K_form__atom_t* src,
   struct _fx_Nt6option1N14K_form__atom_t* dst)
{
   dst->tag = src->tag;
   switch (src->tag) {
   case 2:
      _fx_copy_N14K_form__atom_t(&src->u.Some, &dst->u.Some); break;
   default:
      dst->u = src->u;
   }
}

static void _fx_free_LN14K_form__kexp_t(struct _fx_LN14K_form__kexp_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LN14K_form__kexp_t, _fx_free_N14K_form__kexp_t);
}

static int _fx_cons_LN14K_form__kexp_t(
   struct _fx_N14K_form__kexp_t_data_t* hd,
   struct _fx_LN14K_form__kexp_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN14K_form__kexp_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN14K_form__kexp_t, FX_COPY_PTR);
}

static void _fx_free_T2BN14K_form__atom_t(struct _fx_T2BN14K_form__atom_t* dst)
{
   _fx_free_N14K_form__atom_t(&dst->t1);
}

static void _fx_copy_T2BN14K_form__atom_t(struct _fx_T2BN14K_form__atom_t* src, struct _fx_T2BN14K_form__atom_t* dst)
{
   dst->t0 = src->t0;
   _fx_copy_N14K_form__atom_t(&src->t1, &dst->t1);
}

static void _fx_make_T2BN14K_form__atom_t(bool t0, struct _fx_N14K_form__atom_t* t1, struct _fx_T2BN14K_form__atom_t* fx_result)
{
   fx_result->t0 = t0;
   _fx_copy_N14K_form__atom_t(t1, &fx_result->t1);
}

static void _fx_free_LT2BN14K_form__atom_t(struct _fx_LT2BN14K_form__atom_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2BN14K_form__atom_t, _fx_free_T2BN14K_form__atom_t);
}

static int _fx_cons_LT2BN14K_form__atom_t(
   struct _fx_T2BN14K_form__atom_t* hd,
   struct _fx_LT2BN14K_form__atom_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2BN14K_form__atom_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2BN14K_form__atom_t, _fx_copy_T2BN14K_form__atom_t);
}

static void _fx_free_T2LN14K_form__ktyp_tN14K_form__ktyp_t(struct _fx_T2LN14K_form__ktyp_tN14K_form__ktyp_t* dst)
{
   _fx_free_LN14K_form__ktyp_t(&dst->t0);
   _fx_free_N14K_form__ktyp_t(&dst->t1);
}

static void _fx_copy_T2LN14K_form__ktyp_tN14K_form__ktyp_t(
   struct _fx_T2LN14K_form__ktyp_tN14K_form__ktyp_t* src,
   struct _fx_T2LN14K_form__ktyp_tN14K_form__ktyp_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2LN14K_form__ktyp_tN14K_form__ktyp_t(
   struct _fx_LN14K_form__ktyp_t_data_t* t0,
   struct _fx_N14K_form__ktyp_t_data_t* t1,
   struct _fx_T2LN14K_form__ktyp_tN14K_form__ktyp_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t(struct _fx_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t* dst)
{
   _fx_free_LT2R9Ast__id_tN14K_form__ktyp_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t(
   struct _fx_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t* src,
   struct _fx_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_LT2R9Ast__id_tN14K_form__ktyp_t_data_t* t1,
   struct _fx_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T2iN14K_form__ktyp_t(struct _fx_T2iN14K_form__ktyp_t* dst)
{
   _fx_free_N14K_form__ktyp_t(&dst->t1);
}

static void _fx_copy_T2iN14K_form__ktyp_t(struct _fx_T2iN14K_form__ktyp_t* src, struct _fx_T2iN14K_form__ktyp_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2iN14K_form__ktyp_t(
   int_ t0,
   struct _fx_N14K_form__ktyp_t_data_t* t1,
   struct _fx_T2iN14K_form__ktyp_t* fx_result)
{
   fx_result->t0 = t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_N14K_form__ktyp_t(struct _fx_N14K_form__ktyp_t_data_t** dst)
{
   if (*dst && FX_DECREF((*dst)->rc) == 1) {
      switch ((*dst)->tag) {
      case 12:
         _fx_free_N14K_form__ktyp_t(&(*dst)->u.KTypRawPointer); break;
      case 13:
         _fx_free_T2LN14K_form__ktyp_tN14K_form__ktyp_t(&(*dst)->u.KTypFun); break;
      case 14:
         _fx_free_LN14K_form__ktyp_t(&(*dst)->u.KTypTuple); break;
      case 15:
         _fx_free_T2R9Ast__id_tLT2R9Ast__id_tN14K_form__ktyp_t(&(*dst)->u.KTypRecord); break;
      case 17:
         _fx_free_T2iN14K_form__ktyp_t(&(*dst)->u.KTypArray); break;
      case 18:
         _fx_free_N14K_form__ktyp_t(&(*dst)->u.KTypVector); break;
      case 19:
         _fx_free_N14K_form__ktyp_t(&(*dst)->u.KTypList); break;
      case 20:
         _fx_free_N14K_form__ktyp_t(&(*dst)->u.KTypRef); break;
      default:
         ;
      }
      fx_free(*dst);
   }
   *dst = 0;
}

static void _fx_free_Ta3N14K_form__atom_t(struct _fx_Ta3N14K_form__atom_t* dst)
{
   _fx_free_N14K_form__atom_t(&dst->t0);
   _fx_free_N14K_form__atom_t(&dst->t1);
   _fx_free_N14K_form__atom_t(&dst->t2);
}

static void _fx_copy_Ta3N14K_form__atom_t(struct _fx_Ta3N14K_form__atom_t* src, struct _fx_Ta3N14K_form__atom_t* dst)
{
   _fx_copy_N14K_form__atom_t(&src->t0, &dst->t0);
   _fx_copy_N14K_form__atom_t(&src->t1, &dst->t1);
   _fx_copy_N14K_form__atom_t(&src->t2, &dst->t2);
}

static void _fx_make_Ta3N14K_form__atom_t(
   struct _fx_N14K_form__atom_t* t0,
   struct _fx_N14K_form__atom_t* t1,
   struct _fx_N14K_form__atom_t* t2,
   struct _fx_Ta3N14K_form__atom_t* fx_result)
{
   _fx_copy_N14K_form__atom_t(t0, &fx_result->t0);
   _fx_copy_N14K_form__atom_t(t1, &fx_result->t1);
   _fx_copy_N14K_form__atom_t(t2, &fx_result->t2);
}

static void _fx_free_N13K_form__dom_t(struct _fx_N13K_form__dom_t* dst)
{
   switch (dst->tag) {
   case 1:
      _fx_free_N14K_form__atom_t(&dst->u.DomainElem); break;
   case 2:
      _fx_free_N14K_form__atom_t(&dst->u.DomainFast); break;
   case 3:
      _fx_free_Ta3N14K_form__atom_t(&dst->u.DomainRange); break;
   default:
      ;
   }
   dst->tag = 0;
}

static void _fx_copy_N13K_form__dom_t(struct _fx_N13K_form__dom_t* src, struct _fx_N13K_form__dom_t* dst)
{
   dst->tag = src->tag;
   switch (src->tag) {
   case 1:
      _fx_copy_N14K_form__atom_t(&src->u.DomainElem, &dst->u.DomainElem); break;
   case 2:
      _fx_copy_N14K_form__atom_t(&src->u.DomainFast, &dst->u.DomainFast); break;
   case 3:
      _fx_copy_Ta3N14K_form__atom_t(&src->u.DomainRange, &dst->u.DomainRange); break;
   default:
      dst->u = src->u;
   }
}

static void _fx_free_T2Nt6option1N14K_form__atom_tR10Ast__loc_t(struct _fx_T2Nt6option1N14K_form__atom_tR10Ast__loc_t* dst)
{
   _fx_free_Nt6option1N14K_form__atom_t(&dst->t0);
}

static void _fx_copy_T2Nt6option1N14K_form__atom_tR10Ast__loc_t(
   struct _fx_T2Nt6option1N14K_form__atom_tR10Ast__loc_t* src,
   struct _fx_T2Nt6option1N14K_form__atom_tR10Ast__loc_t* dst)
{
   _fx_copy_Nt6option1N14K_form__atom_t(&src->t0, &dst->t0);
   dst->t1 = src->t1;
}

static void _fx_make_T2Nt6option1N14K_form__atom_tR10Ast__loc_t(
   struct _fx_Nt6option1N14K_form__atom_t* t0,
   struct _fx_R10Ast__loc_t* t1,
   struct _fx_T2Nt6option1N14K_form__atom_tR10Ast__loc_t* fx_result)
{
   _fx_copy_Nt6option1N14K_form__atom_t(t0, &fx_result->t0);
   fx_result->t1 = *t1;
}

static void _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__ktyp_t(&dst->t0);
}

static void _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   dst->t1 = src->t1;
}

static void _fx_make_T2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__ktyp_t_data_t* t0,
   struct _fx_R10Ast__loc_t* t1,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   fx_result->t1 = *t1;
}

static void _fx_free_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__atom_t(&dst->t0);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_copy_N14K_form__atom_t(&src->t0, &dst->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__atom_t* t0,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t1,
   struct _fx_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   _fx_copy_N14K_form__atom_t(t0, &fx_result->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_N13Ast__binary_t(&dst->t0);
   _fx_free_N14K_form__atom_t(&dst->t1);
   _fx_free_N14K_form__atom_t(&dst->t2);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t3);
}

static void _fx_copy_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   _fx_copy_N14K_form__atom_t(&src->t1, &dst->t1);
   _fx_copy_N14K_form__atom_t(&src->t2, &dst->t2);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t3, &dst->t3);
}

static void _fx_make_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N13Ast__binary_t_data_t* t0,
   struct _fx_N14K_form__atom_t* t1,
   struct _fx_N14K_form__atom_t* t2,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t3,
   struct _fx_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   _fx_copy_N14K_form__atom_t(t1, &fx_result->t1);
   _fx_copy_N14K_form__atom_t(t2, &fx_result->t2);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t3, &fx_result->t3);
}

static void _fx_free_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__atom_t(&dst->t1);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   _fx_copy_N14K_form__atom_t(&src->t1, &dst->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N12Ast__unary_t* t0,
   struct _fx_N14K_form__atom_t* t1,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t2,
   struct _fx_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   _fx_copy_N14K_form__atom_t(t1, &fx_result->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_LN14K_form__atom_t(struct _fx_LN14K_form__atom_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LN14K_form__atom_t, _fx_free_N14K_form__atom_t);
}

static int _fx_cons_LN14K_form__atom_t(
   struct _fx_N14K_form__atom_t* hd,
   struct _fx_LN14K_form__atom_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN14K_form__atom_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN14K_form__atom_t, _fx_copy_N14K_form__atom_t);
}

static void _fx_free_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LN14K_form__atom_t(&dst->t1);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N13Ast__intrin_t* t0,
   struct _fx_LN14K_form__atom_t_data_t* t1,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t2,
   struct _fx_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_T2R9Ast__id_tN14K_form__kexp_t(struct _fx_T2R9Ast__id_tN14K_form__kexp_t* dst)
{
   _fx_free_N14K_form__kexp_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tN14K_form__kexp_t(
   struct _fx_T2R9Ast__id_tN14K_form__kexp_t* src,
   struct _fx_T2R9Ast__id_tN14K_form__kexp_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tN14K_form__kexp_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_N14K_form__kexp_t_data_t* t1,
   struct _fx_T2R9Ast__id_tN14K_form__kexp_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LN14K_form__kexp_t(&dst->t0);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_LN14K_form__kexp_t_data_t* t0,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t1,
   struct _fx_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__kexp_t(&dst->t0);
   _fx_free_N14K_form__kexp_t(&dst->t1);
   _fx_free_N14K_form__kexp_t(&dst->t2);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t3);
}

static void _fx_copy_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t3, &dst->t3);
}

static void _fx_make_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__kexp_t_data_t* t0,
   struct _fx_N14K_form__kexp_t_data_t* t1,
   struct _fx_N14K_form__kexp_t_data_t* t2,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t3,
   struct _fx_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t3, &fx_result->t3);
}

static void _fx_free_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LN14K_form__atom_t(&dst->t1);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_LN14K_form__atom_t_data_t* t1,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t2,
   struct _fx_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LN14K_form__atom_t(&dst->t2);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t3);
}

static void _fx_copy_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   dst->t1 = src->t1;
   FX_COPY_PTR(src->t2, &dst->t2);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t3, &dst->t3);
}

static void _fx_make_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* t0,
   int_ t1,
   struct _fx_LN14K_form__atom_t_data_t* t2,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t3,
   struct _fx_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   fx_result->t1 = t1;
   FX_COPY_PTR(t2, &fx_result->t2);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t3, &fx_result->t3);
}

static void _fx_free_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LN14K_form__atom_t(&dst->t0);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_LN14K_form__atom_t_data_t* t0,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t1,
   struct _fx_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LN14K_form__atom_t(&dst->t2);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t3);
}

static void _fx_copy_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   dst->t1 = src->t1;
   FX_COPY_PTR(src->t2, &dst->t2);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t3, &dst->t3);
}

static void _fx_make_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_R9Ast__id_t* t1,
   struct _fx_LN14K_form__atom_t_data_t* t2,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t3,
   struct _fx_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   fx_result->t1 = *t1;
   FX_COPY_PTR(t2, &fx_result->t2);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t3, &fx_result->t3);
}

static void _fx_free_LLT2BN14K_form__atom_t(struct _fx_LLT2BN14K_form__atom_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LLT2BN14K_form__atom_t, _fx_free_LT2BN14K_form__atom_t);
}

static int _fx_cons_LLT2BN14K_form__atom_t(
   struct _fx_LT2BN14K_form__atom_t_data_t* hd,
   struct _fx_LLT2BN14K_form__atom_t_data_t* tl,
   bool addref_tl,
   struct _fx_LLT2BN14K_form__atom_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LLT2BN14K_form__atom_t, FX_COPY_PTR);
}

static void _fx_free_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LLT2BN14K_form__atom_t(&dst->t1);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   bool t0,
   struct _fx_LLT2BN14K_form__atom_t_data_t* t1,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t2,
   struct _fx_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = t0;
   FX_COPY_PTR(t1, &fx_result->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LT2BN14K_form__atom_t(&dst->t0);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_LT2BN14K_form__atom_t_data_t* t0,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t1,
   struct _fx_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_LN13K_form__dom_t(struct _fx_LN13K_form__dom_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LN13K_form__dom_t, _fx_free_N13K_form__dom_t);
}

static int _fx_cons_LN13K_form__dom_t(
   struct _fx_N13K_form__dom_t* hd,
   struct _fx_LN13K_form__dom_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN13K_form__dom_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN13K_form__dom_t, _fx_copy_N13K_form__dom_t);
}

static void _fx_free_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__atom_t(&dst->t0);
   _fx_free_LN13K_form__dom_t(&dst->t3);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t4);
}

static void _fx_copy_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_copy_N14K_form__atom_t(&src->t0, &dst->t0);
   dst->t1 = src->t1;
   dst->t2 = src->t2;
   FX_COPY_PTR(src->t3, &dst->t3);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t4, &dst->t4);
}

static void _fx_make_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__atom_t* t0,
   struct _fx_N13Ast__border_t* t1,
   struct _fx_N18Ast__interpolate_t* t2,
   struct _fx_LN13K_form__dom_t_data_t* t3,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t4,
   struct _fx_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t*
      fx_result)
{
   _fx_copy_N14K_form__atom_t(t0, &fx_result->t0);
   fx_result->t1 = *t1;
   fx_result->t2 = *t2;
   FX_COPY_PTR(t3, &fx_result->t3);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t4, &fx_result->t4);
}

static void _fx_free_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   dst->t1 = src->t1;
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* t0,
   int_ t1,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t2,
   struct _fx_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   fx_result->t1 = t1;
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t(struct _fx_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__atom_t(&dst->t1);
}

static void _fx_copy_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t(
   struct _fx_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t* src,
   struct _fx_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   _fx_copy_N14K_form__atom_t(&src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_N14K_form__atom_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   _fx_copy_N14K_form__atom_t(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_T2LN14K_form__kexp_tN14K_form__kexp_t(struct _fx_T2LN14K_form__kexp_tN14K_form__kexp_t* dst)
{
   _fx_free_LN14K_form__kexp_t(&dst->t0);
   _fx_free_N14K_form__kexp_t(&dst->t1);
}

static void _fx_copy_T2LN14K_form__kexp_tN14K_form__kexp_t(
   struct _fx_T2LN14K_form__kexp_tN14K_form__kexp_t* src,
   struct _fx_T2LN14K_form__kexp_tN14K_form__kexp_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2LN14K_form__kexp_tN14K_form__kexp_t(
   struct _fx_LN14K_form__kexp_t_data_t* t0,
   struct _fx_N14K_form__kexp_t_data_t* t1,
   struct _fx_T2LN14K_form__kexp_tN14K_form__kexp_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_LT2LN14K_form__kexp_tN14K_form__kexp_t(struct _fx_LT2LN14K_form__kexp_tN14K_form__kexp_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2LN14K_form__kexp_tN14K_form__kexp_t, _fx_free_T2LN14K_form__kexp_tN14K_form__kexp_t);
}

static int _fx_cons_LT2LN14K_form__kexp_tN14K_form__kexp_t(
   struct _fx_T2LN14K_form__kexp_tN14K_form__kexp_t* hd,
   struct _fx_LT2LN14K_form__kexp_tN14K_form__kexp_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2LN14K_form__kexp_tN14K_form__kexp_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2LN14K_form__kexp_tN14K_form__kexp_t, _fx_copy_T2LN14K_form__kexp_tN14K_form__kexp_t);
}

static void _fx_free_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_LT2LN14K_form__kexp_tN14K_form__kexp_t(&dst->t0);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_LT2LN14K_form__kexp_tN14K_form__kexp_t_data_t* t0,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t1,
   struct _fx_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__kexp_t(&dst->t0);
   _fx_free_N14K_form__kexp_t(&dst->t1);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__kexp_t_data_t* t0,
   struct _fx_N14K_form__kexp_t_data_t* t1,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t2,
   struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__atom_t(&dst->t0);
   _fx_free_N14K_form__ktyp_t(&dst->t1);
}

static void _fx_copy_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t* dst)
{
   _fx_copy_N14K_form__atom_t(&src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__atom_t* t0,
   struct _fx_N14K_form__ktyp_t_data_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   _fx_copy_N14K_form__atom_t(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_T2R9Ast__id_tN13K_form__dom_t(struct _fx_T2R9Ast__id_tN13K_form__dom_t* dst)
{
   _fx_free_N13K_form__dom_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tN13K_form__dom_t(
   struct _fx_T2R9Ast__id_tN13K_form__dom_t* src,
   struct _fx_T2R9Ast__id_tN13K_form__dom_t* dst)
{
   dst->t0 = src->t0;
   _fx_copy_N13K_form__dom_t(&src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tN13K_form__dom_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_N13K_form__dom_t* t1,
   struct _fx_T2R9Ast__id_tN13K_form__dom_t* fx_result)
{
   fx_result->t0 = *t0;
   _fx_copy_N13K_form__dom_t(t1, &fx_result->t1);
}

static void _fx_free_LT2R9Ast__id_tN13K_form__dom_t(struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2R9Ast__id_tN13K_form__dom_t, _fx_free_T2R9Ast__id_tN13K_form__dom_t);
}

static int _fx_cons_LT2R9Ast__id_tN13K_form__dom_t(
   struct _fx_T2R9Ast__id_tN13K_form__dom_t* hd,
   struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2R9Ast__id_tN13K_form__dom_t, _fx_copy_T2R9Ast__id_tN13K_form__dom_t);
}

static void _fx_free_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t(
   struct _fx_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t* dst)
{
   _fx_free_N14K_form__kexp_t(&dst->t0);
   _fx_free_LT2R9Ast__id_tN13K_form__dom_t(&dst->t1);
   fx_free_list_simple(&dst->t2);
}

static void _fx_copy_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t(
   struct _fx_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t* src,
   struct _fx_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
}

static void _fx_make_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t(
   struct _fx_N14K_form__kexp_t_data_t* t0,
   struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t* t1,
   struct _fx_LR9Ast__id_t_data_t* t2,
   struct _fx_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
}

static void _fx_free_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t(
   struct _fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t,
      _fx_free_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t);
}

static int _fx_cons_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t(
   struct _fx_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t* hd,
   struct _fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t,
      _fx_copy_T3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t);
}

static void
   _fx_free_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t*
      dst)
{
   _fx_free_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t(&dst->t0);
   _fx_free_N14K_form__kexp_t(&dst->t1);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t3);
}

static void
   _fx_copy_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t*
      src,
   struct _fx_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t*
      dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t3, &dst->t3);
}

static void
   _fx_make_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_t_data_t* t0,
   struct _fx_N14K_form__kexp_t_data_t* t1,
   struct _fx_R16Ast__for_flags_t* t2,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t3,
   struct _fx_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t*
      fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t3, &fx_result->t3);
}

static void _fx_free_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t(
   struct _fx_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t* dst)
{
   _fx_free_LT2R9Ast__id_tN13K_form__dom_t(&dst->t0);
   fx_free_list_simple(&dst->t1);
   _fx_free_N14K_form__kexp_t(&dst->t2);
}

static void _fx_copy_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t(
   struct _fx_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t* src,
   struct _fx_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
   dst->t3 = src->t3;
   dst->t4 = src->t4;
}

static void _fx_make_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t(
   struct _fx_LT2R9Ast__id_tN13K_form__dom_t_data_t* t0,
   struct _fx_LR9Ast__id_t_data_t* t1,
   struct _fx_N14K_form__kexp_t_data_t* t2,
   struct _fx_R16Ast__for_flags_t* t3,
   struct _fx_R10Ast__loc_t* t4,
   struct _fx_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
   fx_result->t3 = *t3;
   fx_result->t4 = *t4;
}

static void _fx_free_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t(
   struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__kexp_t(&dst->t0);
   _fx_free_N14K_form__kexp_t(&dst->t1);
}

static void _fx_copy_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t(
   struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t* src,
   struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t(
   struct _fx_N14K_form__kexp_t_data_t* t0,
   struct _fx_N14K_form__kexp_t_data_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_T2ST2N14K_form__ktyp_tR10Ast__loc_t(struct _fx_T2ST2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   fx_free_str(&dst->t0);
   _fx_free_T2N14K_form__ktyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2ST2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_T2ST2N14K_form__ktyp_tR10Ast__loc_t* src,
   struct _fx_T2ST2N14K_form__ktyp_tR10Ast__loc_t* dst)
{
   fx_copy_str(&src->t0, &dst->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2ST2N14K_form__ktyp_tR10Ast__loc_t(
   fx_str_t* t0,
   struct _fx_T2N14K_form__ktyp_tR10Ast__loc_t* t1,
   struct _fx_T2ST2N14K_form__ktyp_tR10Ast__loc_t* fx_result)
{
   fx_copy_str(t0, &fx_result->t0);
   _fx_copy_T2N14K_form__ktyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t(struct _fx_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__kexp_t(&dst->t1);
}

static void _fx_copy_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t(
   struct _fx_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t* src,
   struct _fx_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_N14K_form__kexp_t_data_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_N14K_form__kexp_t(struct _fx_N14K_form__kexp_t_data_t** dst)
{
   if (*dst && FX_DECREF((*dst)->rc) == 1) {
      switch ((*dst)->tag) {
      case 4:
         _fx_free_T2Nt6option1N14K_form__atom_tR10Ast__loc_t(&(*dst)->u.KExpReturn); break;
      case 5:
         _fx_free_T2N14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpAtom); break;
      case 6:
         _fx_free_T4N13Ast__binary_tN14K_form__atom_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpBinary);
         break;
      case 7:
         _fx_free_T3N12Ast__unary_tN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpUnary); break;
      case 8:
         _fx_free_T3N13Ast__intrin_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpIntrin); break;
      case 9:
         _fx_free_T2R9Ast__id_tN14K_form__kexp_t(&(*dst)->u.KExpSync); break;
      case 10:
         _fx_free_T2LN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpSeq); break;
      case 11:
         _fx_free_T4N14K_form__kexp_tN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpIf);
         break;
      case 12:
         _fx_free_T3R9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpCall); break;
      case 13:
         _fx_free_T4R9Ast__id_tiLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpICall); break;
      case 14:
         _fx_free_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpMkTuple); break;
      case 15:
         _fx_free_T2LN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpMkRecord); break;
      case 16:
         _fx_free_T4R9Ast__id_tR9Ast__id_tLN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpMkClosure); break;
      case 17:
         _fx_free_T3BLLT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpMkArray); break;
      case 18:
         _fx_free_T2LT2BN14K_form__atom_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpMkVector); break;
      case 19:
         _fx_free_T5N14K_form__atom_tN13Ast__border_tN18Ast__interpolate_tLN13K_form__dom_tT2N14K_form__ktyp_tR10Ast__loc_t(
            &(*dst)->u.KExpAt);
         break;
      case 20:
         _fx_free_T3R9Ast__id_tiT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpMem); break;
      case 21:
         _fx_free_T3R9Ast__id_tN14K_form__atom_tR10Ast__loc_t(&(*dst)->u.KExpAssign); break;
      case 22:
         _fx_free_T2LT2LN14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpMatch); break;
      case 23:
         _fx_free_T3N14K_form__kexp_tN14K_form__kexp_tT2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpTryCatch); break;
      case 25:
         _fx_free_T3N14K_form__atom_tN14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpCast); break;
      case 26:
         _fx_free_T4LT3N14K_form__kexp_tLT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tT2N14K_form__ktyp_tR10Ast__loc_t(
            &(*dst)->u.KExpMap);
         break;
      case 27:
         _fx_free_T5LT2R9Ast__id_tN13K_form__dom_tLR9Ast__id_tN14K_form__kexp_tR16Ast__for_flags_tR10Ast__loc_t(
            &(*dst)->u.KExpFor);
         break;
      case 28:
         _fx_free_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t(&(*dst)->u.KExpWhile); break;
      case 29:
         _fx_free_T3N14K_form__kexp_tN14K_form__kexp_tR10Ast__loc_t(&(*dst)->u.KExpDoWhile); break;
      case 30:
         _fx_free_T2ST2N14K_form__ktyp_tR10Ast__loc_t(&(*dst)->u.KExpCCode); break;
      case 31:
         _fx_free_T3R9Ast__id_tN14K_form__kexp_tR10Ast__loc_t(&(*dst)->u.KDefVal); break;
      case 32:
         _fx_free_rR17K_form__kdeffun_t(&(*dst)->u.KDefFun); break;
      case 33:
         _fx_free_rR17K_form__kdefexn_t(&(*dst)->u.KDefExn); break;
      case 34:
         _fx_free_rR21K_form__kdefvariant_t(&(*dst)->u.KDefVariant); break;
      case 35:
         _fx_free_rR23K_form__kdefinterface_t(&(*dst)->u.KDefInterface); break;
      case 36:
         _fx_free_rR17K_form__kdeftyp_t(&(*dst)->u.KDefTyp); break;
      case 37:
         _fx_free_rR25K_form__kdefclosurevars_t(&(*dst)->u.KDefClosureVars); break;
      default:
         ;
      }
      fx_free(*dst);
   }
   *dst = 0;
}

static void _fx_free_Nt6option1N14C_form__ctyp_t(struct _fx_Nt6option1N14C_form__ctyp_t* dst)
{
   switch (dst->tag) {
   case 2:
      _fx_free_N14C_form__ctyp_t(&dst->u.Some); break;
   default:
      ;
   }
   dst->tag = 0;
}

static void _fx_copy_Nt6option1N14C_form__ctyp_t(
   struct _fx_Nt6option1N14C_form__ctyp_t* src,
   struct _fx_Nt6option1N14C_form__ctyp_t* dst)
{
   dst->tag = src->tag;
   switch (src->tag) {
   case 2:
      FX_COPY_PTR(src->u.Some, &dst->u.Some); break;
   default:
      dst->u = src->u;
   }
}

static void _fx_free_T2SR10Ast__loc_t(struct _fx_T2SR10Ast__loc_t* dst)
{
   fx_free_str(&dst->t0);
}

static void _fx_copy_T2SR10Ast__loc_t(struct _fx_T2SR10Ast__loc_t* src, struct _fx_T2SR10Ast__loc_t* dst)
{
   fx_copy_str(&src->t0, &dst->t0);
   dst->t1 = src->t1;
}

static void _fx_make_T2SR10Ast__loc_t(fx_str_t* t0, struct _fx_R10Ast__loc_t* t1, struct _fx_T2SR10Ast__loc_t* fx_result)
{
   fx_copy_str(t0, &fx_result->t0);
   fx_result->t1 = *t1;
}

static void _fx_free_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t(
   struct _fx_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t* dst)
{
   _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&dst->t1);
}

static void _fx_copy_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t(
   struct _fx_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t* src,
   struct _fx_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t(
   struct _fx_Nt6option1R9Ast__id_t* t0,
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* t1,
   struct _fx_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_LN14C_form__ctyp_t(struct _fx_LN14C_form__ctyp_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LN14C_form__ctyp_t, _fx_free_N14C_form__ctyp_t);
}

static int _fx_cons_LN14C_form__ctyp_t(
   struct _fx_N14C_form__ctyp_t_data_t* hd,
   struct _fx_LN14C_form__ctyp_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN14C_form__ctyp_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN14C_form__ctyp_t, FX_COPY_PTR);
}

static void _fx_free_T2LN14C_form__ctyp_tN14C_form__ctyp_t(struct _fx_T2LN14C_form__ctyp_tN14C_form__ctyp_t* dst)
{
   _fx_free_LN14C_form__ctyp_t(&dst->t0);
   _fx_free_N14C_form__ctyp_t(&dst->t1);
}

static void _fx_copy_T2LN14C_form__ctyp_tN14C_form__ctyp_t(
   struct _fx_T2LN14C_form__ctyp_tN14C_form__ctyp_t* src,
   struct _fx_T2LN14C_form__ctyp_tN14C_form__ctyp_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2LN14C_form__ctyp_tN14C_form__ctyp_t(
   struct _fx_LN14C_form__ctyp_t_data_t* t0,
   struct _fx_N14C_form__ctyp_t_data_t* t1,
   struct _fx_T2LN14C_form__ctyp_tN14C_form__ctyp_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static int _fx_cons_LN19C_form__ctyp_attr_t(
   struct _fx_N19C_form__ctyp_attr_t* hd,
   struct _fx_LN19C_form__ctyp_attr_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN19C_form__ctyp_attr_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN19C_form__ctyp_attr_t, FX_COPY_SIMPLE_BY_PTR);
}

static void _fx_free_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(struct _fx_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t* dst)
{
   fx_free_list_simple(&dst->t0);
   _fx_free_N14C_form__ctyp_t(&dst->t1);
}

static void _fx_copy_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(
   struct _fx_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t* src,
   struct _fx_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(
   struct _fx_LN19C_form__ctyp_attr_t_data_t* t0,
   struct _fx_N14C_form__ctyp_t_data_t* t1,
   struct _fx_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T2iN14C_form__ctyp_t(struct _fx_T2iN14C_form__ctyp_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->t1);
}

static void _fx_copy_T2iN14C_form__ctyp_t(struct _fx_T2iN14C_form__ctyp_t* src, struct _fx_T2iN14C_form__ctyp_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2iN14C_form__ctyp_t(
   int_ t0,
   struct _fx_N14C_form__ctyp_t_data_t* t1,
   struct _fx_T2iN14C_form__ctyp_t* fx_result)
{
   fx_result->t0 = t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_N14C_form__ctyp_t(struct _fx_N14C_form__ctyp_t_data_t** dst)
{
   if (*dst && FX_DECREF((*dst)->rc) == 1) {
      switch ((*dst)->tag) {
      case 14:
         _fx_free_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t(&(*dst)->u.CTypStruct); break;
      case 15:
         _fx_free_T2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t(&(*dst)->u.CTypUnion); break;
      case 16:
         _fx_free_T2LN14C_form__ctyp_tN14C_form__ctyp_t(&(*dst)->u.CTypFunRawPtr); break;
      case 17:
         _fx_free_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(&(*dst)->u.CTypRawPtr); break;
      case 18:
         _fx_free_T2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(&(*dst)->u.CTypRawArray); break;
      case 19:
         _fx_free_T2iN14C_form__ctyp_t(&(*dst)->u.CTypArray); break;
      case 20:
         _fx_free_N14C_form__ctyp_t(&(*dst)->u.CTypVector); break;
      default:
         ;
      }
      fx_free(*dst);
   }
   *dst = 0;
}

static void _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->t0);
}

static void _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   dst->t1 = src->t1;
}

static void _fx_make_T2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N14C_form__ctyp_t_data_t* t0,
   struct _fx_R10Ast__loc_t* t1,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   fx_result->t1 = *t1;
}

static void _fx_free_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* t1,
   struct _fx_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14K_form__klit_t(&dst->t0);
   _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_copy_N14K_form__klit_t(&src->t0, &dst->t0);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N14K_form__klit_t* t0,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* t1,
   struct _fx_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   _fx_copy_N14K_form__klit_t(t0, &fx_result->t0);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t1);
   _fx_free_N14C_form__cexp_t(&dst->t2);
   _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&dst->t3);
}

static void _fx_copy_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(&src->t3, &dst->t3);
}

static void _fx_make_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N17C_form__cbinary_t* t0,
   struct _fx_N14C_form__cexp_t_data_t* t1,
   struct _fx_N14C_form__cexp_t_data_t* t2,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* t3,
   struct _fx_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(t3, &fx_result->t3);
}

static void _fx_free_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t1);
   _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N16C_form__cunary_t* t0,
   struct _fx_N14C_form__cexp_t_data_t* t1,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* t2,
   struct _fx_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t0);
   _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   dst->t1 = src->t1;
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N14C_form__cexp_t_data_t* t0,
   struct _fx_R9Ast__id_t* t1,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* t2,
   struct _fx_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   fx_result->t1 = *t1;
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t0);
   _fx_free_N14C_form__ctyp_t(&dst->t1);
}

static void _fx_copy_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N14C_form__cexp_t_data_t* t0,
   struct _fx_N14C_form__ctyp_t_data_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t0);
   _fx_free_N14C_form__cexp_t(&dst->t1);
   _fx_free_N14C_form__cexp_t(&dst->t2);
   _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&dst->t3);
}

static void _fx_copy_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(&src->t3, &dst->t3);
}

static void _fx_make_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N14C_form__cexp_t_data_t* t0,
   struct _fx_N14C_form__cexp_t_data_t* t1,
   struct _fx_N14C_form__cexp_t_data_t* t2,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* t3,
   struct _fx_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(t3, &fx_result->t3);
}

static void _fx_free_LN14C_form__cexp_t(struct _fx_LN14C_form__cexp_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LN14C_form__cexp_t, _fx_free_N14C_form__cexp_t);
}

static int _fx_cons_LN14C_form__cexp_t(
   struct _fx_N14C_form__cexp_t_data_t* hd,
   struct _fx_LN14C_form__cexp_t_data_t* tl,
   bool addref_tl,
   struct _fx_LN14C_form__cexp_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LN14C_form__cexp_t, FX_COPY_PTR);
}

static void _fx_free_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t0);
   _fx_free_LN14C_form__cexp_t(&dst->t1);
   _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&dst->t2);
}

static void _fx_copy_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(&src->t2, &dst->t2);
}

static void _fx_make_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N14C_form__cexp_t_data_t* t0,
   struct _fx_LN14C_form__cexp_t_data_t* t1,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* t2,
   struct _fx_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(t2, &fx_result->t2);
}

static void _fx_free_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   _fx_free_LN14C_form__cexp_t(&dst->t0);
   _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&dst->t1);
}

static void _fx_copy_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* src,
   struct _fx_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(&src->t1, &dst->t1);
}

static void _fx_make_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_LN14C_form__cexp_t_data_t* t0,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* t1,
   struct _fx_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   _fx_copy_T2N14C_form__ctyp_tR10Ast__loc_t(t1, &fx_result->t1);
}

static void _fx_free_N14C_form__cexp_t(struct _fx_N14C_form__cexp_t_data_t** dst)
{
   if (*dst && FX_DECREF((*dst)->rc) == 1) {
      switch ((*dst)->tag) {
      case 1:
         _fx_free_T2R9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpIdent); break;
      case 2:
         _fx_free_T2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpLit); break;
      case 3:
         _fx_free_T4N17C_form__cbinary_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
            &(*dst)->u.CExpBinary);
         break;
      case 4:
         _fx_free_T3N16C_form__cunary_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpUnary); break;
      case 5:
         _fx_free_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpMem); break;
      case 6:
         _fx_free_T3N14C_form__cexp_tR9Ast__id_tT2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpArrow); break;
      case 7:
         _fx_free_T3N14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpCast); break;
      case 8:
         _fx_free_T4N14C_form__cexp_tN14C_form__cexp_tN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpTernary);
         break;
      case 9:
         _fx_free_T3N14C_form__cexp_tLN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpCall); break;
      case 10:
         _fx_free_T2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpInit); break;
      case 11:
         _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&(*dst)->u.CExpTyp); break;
      case 12:
         _fx_free_T2SR10Ast__loc_t(&(*dst)->u.CExpCCode); break;
      default:
         ;
      }
      fx_free(*dst);
   }
   *dst = 0;
}

static void _fx_free_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t(struct _fx_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t* dst)
{
   _fx_free_Nt6option1N14C_form__cexp_t(&dst->t0);
}

static void _fx_copy_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t(
   struct _fx_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t* src,
   struct _fx_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t* dst)
{
   _fx_copy_Nt6option1N14C_form__cexp_t(&src->t0, &dst->t0);
   dst->t1 = src->t1;
}

static void _fx_make_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t(
   struct _fx_Nt6option1N14C_form__cexp_t* t0,
   struct _fx_R10Ast__loc_t* t1,
   struct _fx_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t* fx_result)
{
   _fx_copy_Nt6option1N14C_form__cexp_t(t0, &fx_result->t0);
   fx_result->t1 = *t1;
}

static void _fx_free_T2LN15C_form__cstmt_tR10Ast__loc_t(struct _fx_T2LN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   _fx_free_LN15C_form__cstmt_t(&dst->t0);
}

static void _fx_copy_T2LN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T2LN15C_form__cstmt_tR10Ast__loc_t* src,
   struct _fx_T2LN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   dst->t1 = src->t1;
}

static void _fx_make_T2LN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_LN15C_form__cstmt_t_data_t* t0,
   struct _fx_R10Ast__loc_t* t1,
   struct _fx_T2LN15C_form__cstmt_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   fx_result->t1 = *t1;
}

static void _fx_free_T2R9Ast__id_tN15C_form__cstmt_t(struct _fx_T2R9Ast__id_tN15C_form__cstmt_t* dst)
{
   _fx_free_N15C_form__cstmt_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tN15C_form__cstmt_t(
   struct _fx_T2R9Ast__id_tN15C_form__cstmt_t* src,
   struct _fx_T2R9Ast__id_tN15C_form__cstmt_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tN15C_form__cstmt_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_N15C_form__cstmt_t_data_t* t1,
   struct _fx_T2R9Ast__id_tN15C_form__cstmt_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t0);
   _fx_free_N15C_form__cstmt_t(&dst->t1);
   _fx_free_N15C_form__cstmt_t(&dst->t2);
}

static void _fx_copy_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t* src,
   struct _fx_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
   dst->t3 = src->t3;
}

static void _fx_make_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_N14C_form__cexp_t_data_t* t0,
   struct _fx_N15C_form__cstmt_t_data_t* t1,
   struct _fx_N15C_form__cstmt_t_data_t* t2,
   struct _fx_R10Ast__loc_t* t3,
   struct _fx_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
   fx_result->t3 = *t3;
}

static void
   _fx_free_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t*
      dst)
{
   _fx_free_Nt6option1N14C_form__ctyp_t(&dst->t0);
   _fx_free_LN14C_form__cexp_t(&dst->t1);
   _fx_free_Nt6option1N14C_form__cexp_t(&dst->t2);
   _fx_free_LN14C_form__cexp_t(&dst->t3);
   _fx_free_N15C_form__cstmt_t(&dst->t4);
}

static void
   _fx_copy_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t*
      src,
   struct _fx_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t*
      dst)
{
   _fx_copy_Nt6option1N14C_form__ctyp_t(&src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   _fx_copy_Nt6option1N14C_form__cexp_t(&src->t2, &dst->t2);
   FX_COPY_PTR(src->t3, &dst->t3);
   FX_COPY_PTR(src->t4, &dst->t4);
   dst->t5 = src->t5;
}

static void
   _fx_make_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_Nt6option1N14C_form__ctyp_t* t0,
   struct _fx_LN14C_form__cexp_t_data_t* t1,
   struct _fx_Nt6option1N14C_form__cexp_t* t2,
   struct _fx_LN14C_form__cexp_t_data_t* t3,
   struct _fx_N15C_form__cstmt_t_data_t* t4,
   struct _fx_R10Ast__loc_t* t5,
   struct _fx_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t*
      fx_result)
{
   _fx_copy_Nt6option1N14C_form__ctyp_t(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   _fx_copy_Nt6option1N14C_form__cexp_t(t2, &fx_result->t2);
   FX_COPY_PTR(t3, &fx_result->t3);
   FX_COPY_PTR(t4, &fx_result->t4);
   fx_result->t5 = *t5;
}

static void _fx_free_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t0);
   _fx_free_N15C_form__cstmt_t(&dst->t1);
}

static void _fx_copy_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t* src,
   struct _fx_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_N14C_form__cexp_t_data_t* t0,
   struct _fx_N15C_form__cstmt_t_data_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t(
   struct _fx_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t* dst)
{
   _fx_free_N15C_form__cstmt_t(&dst->t0);
   _fx_free_N14C_form__cexp_t(&dst->t1);
}

static void _fx_copy_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t(
   struct _fx_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t* src,
   struct _fx_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t(
   struct _fx_N15C_form__cstmt_t_data_t* t0,
   struct _fx_N14C_form__cexp_t_data_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_T2LN14C_form__cexp_tLN15C_form__cstmt_t(struct _fx_T2LN14C_form__cexp_tLN15C_form__cstmt_t* dst)
{
   _fx_free_LN14C_form__cexp_t(&dst->t0);
   _fx_free_LN15C_form__cstmt_t(&dst->t1);
}

static void _fx_copy_T2LN14C_form__cexp_tLN15C_form__cstmt_t(
   struct _fx_T2LN14C_form__cexp_tLN15C_form__cstmt_t* src,
   struct _fx_T2LN14C_form__cexp_tLN15C_form__cstmt_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2LN14C_form__cexp_tLN15C_form__cstmt_t(
   struct _fx_LN14C_form__cexp_t_data_t* t0,
   struct _fx_LN15C_form__cstmt_t_data_t* t1,
   struct _fx_T2LN14C_form__cexp_tLN15C_form__cstmt_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_LT2LN14C_form__cexp_tLN15C_form__cstmt_t(struct _fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t, _fx_free_T2LN14C_form__cexp_tLN15C_form__cstmt_t);
}

static int _fx_cons_LT2LN14C_form__cexp_tLN15C_form__cstmt_t(
   struct _fx_T2LN14C_form__cexp_tLN15C_form__cstmt_t* hd,
   struct _fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t, _fx_copy_T2LN14C_form__cexp_tLN15C_form__cstmt_t);
}

static void _fx_free_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t0);
   _fx_free_LT2LN14C_form__cexp_tLN15C_form__cstmt_t(&dst->t1);
}

static void _fx_copy_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t* src,
   struct _fx_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_N14C_form__cexp_t_data_t* t0,
   struct _fx_LT2LN14C_form__cexp_tLN15C_form__cstmt_t_data_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t(
   struct _fx_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->t0);
   _fx_free_Nt6option1N14C_form__cexp_t(&dst->t2);
}

static void _fx_copy_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t(
   struct _fx_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t* src,
   struct _fx_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   dst->t1 = src->t1;
   _fx_copy_Nt6option1N14C_form__cexp_t(&src->t2, &dst->t2);
   dst->t3 = src->t3;
}

static void _fx_make_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t(
   struct _fx_N14C_form__ctyp_t_data_t* t0,
   struct _fx_R9Ast__id_t* t1,
   struct _fx_Nt6option1N14C_form__cexp_t* t2,
   struct _fx_R10Ast__loc_t* t3,
   struct _fx_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   fx_result->t1 = *t1;
   _fx_copy_Nt6option1N14C_form__cexp_t(t2, &fx_result->t2);
   fx_result->t3 = *t3;
}

static void _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(struct _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t* dst)
{
   _fx_free_N14C_form__cexp_t(&dst->t0);
   _fx_free_LN15C_form__cstmt_t(&dst->t1);
}

static void _fx_copy_T2N14C_form__cexp_tLN15C_form__cstmt_t(
   struct _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t* src,
   struct _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2N14C_form__cexp_tLN15C_form__cstmt_t(
   struct _fx_N14C_form__cexp_t_data_t* t0,
   struct _fx_LN15C_form__cstmt_t_data_t* t1,
   struct _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_LT2N14C_form__cexp_tLN15C_form__cstmt_t(struct _fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t_data_t** dst)
{
   FX_FREE_LIST_IMPL(_fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t, _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t);
}

static int _fx_cons_LT2N14C_form__cexp_tLN15C_form__cstmt_t(
   struct _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t* hd,
   struct _fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t_data_t* tl,
   bool addref_tl,
   struct _fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t_data_t** fx_result)
{
   FX_MAKE_LIST_IMPL(_fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t, _fx_copy_T2N14C_form__cexp_tLN15C_form__cstmt_t);
}

static void _fx_free_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   _fx_free_LT2N14C_form__cexp_tLN15C_form__cstmt_t(&dst->t0);
   _fx_free_LN15C_form__cstmt_t(&dst->t1);
}

static void _fx_copy_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t* src,
   struct _fx_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   dst->t2 = src->t2;
}

static void _fx_make_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_LT2N14C_form__cexp_tLN15C_form__cstmt_t_data_t* t0,
   struct _fx_LN15C_form__cstmt_t_data_t* t1,
   struct _fx_R10Ast__loc_t* t2,
   struct _fx_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   fx_result->t2 = *t2;
}

static void _fx_free_N15C_form__cstmt_t(struct _fx_N15C_form__cstmt_t_data_t** dst)
{
   if (*dst && FX_DECREF((*dst)->rc) == 1) {
      switch ((*dst)->tag) {
      case 2:
         _fx_free_T2SR10Ast__loc_t(&(*dst)->u.CComment); break;
      case 3:
         _fx_free_N14C_form__cexp_t(&(*dst)->u.CExp); break;
      case 6:
         _fx_free_T2Nt6option1N14C_form__cexp_tR10Ast__loc_t(&(*dst)->u.CStmtReturn); break;
      case 7:
         _fx_free_T2LN15C_form__cstmt_tR10Ast__loc_t(&(*dst)->u.CStmtBlock); break;
      case 8:
         _fx_free_T2R9Ast__id_tN15C_form__cstmt_t(&(*dst)->u.CStmtSync); break;
      case 9:
         _fx_free_T4N14C_form__cexp_tN15C_form__cstmt_tN15C_form__cstmt_tR10Ast__loc_t(&(*dst)->u.CStmtIf); break;
      case 12:
         _fx_free_T6Nt6option1N14C_form__ctyp_tLN14C_form__cexp_tNt6option1N14C_form__cexp_tLN14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t(
            &(*dst)->u.CStmtFor);
         break;
      case 13:
         _fx_free_T3N14C_form__cexp_tN15C_form__cstmt_tR10Ast__loc_t(&(*dst)->u.CStmtWhile); break;
      case 14:
         _fx_free_T3N15C_form__cstmt_tN14C_form__cexp_tR10Ast__loc_t(&(*dst)->u.CStmtDoWhile); break;
      case 15:
         _fx_free_T3N14C_form__cexp_tLT2LN14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(&(*dst)->u.CStmtSwitch); break;
      case 16:
         _fx_free_T4N14C_form__ctyp_tR9Ast__id_tNt6option1N14C_form__cexp_tR10Ast__loc_t(&(*dst)->u.CDefVal); break;
      case 17:
         _fx_free_rR17C_form__cdeffun_t(&(*dst)->u.CDefFun); break;
      case 18:
         _fx_free_rR17C_form__cdeftyp_t(&(*dst)->u.CDefTyp); break;
      case 21:
         _fx_free_rR18C_form__cdefenum_t(&(*dst)->u.CDefEnum); break;
      case 22:
         _fx_free_rR23C_form__cdefinterface_t(&(*dst)->u.CDefInterface); break;
      case 23:
         _fx_free_rR19C_form__cdefmacro_t(&(*dst)->u.CMacroDef); break;
      case 25:
         _fx_free_T3LT2N14C_form__cexp_tLN15C_form__cstmt_tLN15C_form__cstmt_tR10Ast__loc_t(&(*dst)->u.CMacroIf); break;
      case 26:
         _fx_free_T2SR10Ast__loc_t(&(*dst)->u.CMacroInclude); break;
      case 27:
         _fx_free_T2SR10Ast__loc_t(&(*dst)->u.CMacroPragma); break;
      default:
         ;
      }
      fx_free(*dst);
   }
   *dst = 0;
}

static void _fx_free_T2Nt11Set__tree_t1R9Ast__id_ti(struct _fx_T2Nt11Set__tree_t1R9Ast__id_ti* dst)
{
   _fx_free_Nt11Set__tree_t1R9Ast__id_t(&dst->t0);
}

static void _fx_copy_T2Nt11Set__tree_t1R9Ast__id_ti(
   struct _fx_T2Nt11Set__tree_t1R9Ast__id_ti* src,
   struct _fx_T2Nt11Set__tree_t1R9Ast__id_ti* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   dst->t1 = src->t1;
}

static void _fx_make_T2Nt11Set__tree_t1R9Ast__id_ti(
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t0,
   int_ t1,
   struct _fx_T2Nt11Set__tree_t1R9Ast__id_ti* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   fx_result->t1 = t1;
}

static void _fx_free_T2Nt11Set__tree_t1R9Ast__id_tB(struct _fx_T2Nt11Set__tree_t1R9Ast__id_tB* dst)
{
   _fx_free_Nt11Set__tree_t1R9Ast__id_t(&dst->t0);
}

static void _fx_copy_T2Nt11Set__tree_t1R9Ast__id_tB(
   struct _fx_T2Nt11Set__tree_t1R9Ast__id_tB* src,
   struct _fx_T2Nt11Set__tree_t1R9Ast__id_tB* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   dst->t1 = src->t1;
}

static void _fx_make_T2Nt11Set__tree_t1R9Ast__id_tB(
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t0,
   bool t1,
   struct _fx_T2Nt11Set__tree_t1R9Ast__id_tB* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   fx_result->t1 = t1;
}

static void _fx_free_Ta3LN15C_form__cstmt_t(struct _fx_Ta3LN15C_form__cstmt_t* dst)
{
   _fx_free_LN15C_form__cstmt_t(&dst->t0);
   _fx_free_LN15C_form__cstmt_t(&dst->t1);
   _fx_free_LN15C_form__cstmt_t(&dst->t2);
}

static void _fx_copy_Ta3LN15C_form__cstmt_t(struct _fx_Ta3LN15C_form__cstmt_t* src, struct _fx_Ta3LN15C_form__cstmt_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
}

static void _fx_make_Ta3LN15C_form__cstmt_t(
   struct _fx_LN15C_form__cstmt_t_data_t* t0,
   struct _fx_LN15C_form__cstmt_t_data_t* t1,
   struct _fx_LN15C_form__cstmt_t_data_t* t2,
   struct _fx_Ta3LN15C_form__cstmt_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
}

static void _fx_free_T2N14C_form__ctyp_tLN19C_form__carg_attr_t(struct _fx_T2N14C_form__ctyp_tLN19C_form__carg_attr_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->t0);
   fx_free_list_simple(&dst->t1);
}

static void _fx_copy_T2N14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_T2N14C_form__ctyp_tLN19C_form__carg_attr_t* src,
   struct _fx_T2N14C_form__ctyp_tLN19C_form__carg_attr_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2N14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_N14C_form__ctyp_t_data_t* t0,
   struct _fx_LN19C_form__carg_attr_t_data_t* t1,
   struct _fx_T2N14C_form__ctyp_tLN19C_form__carg_attr_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* dst)
{
   _fx_free_N14C_form__ctyp_t(&dst->t0);
   _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&dst->t1);
}

static void _fx_copy_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* src,
   struct _fx_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_N14C_form__ctyp_t_data_t* t0,
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t* t1,
   struct _fx_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(
   struct _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t* dst)
{
   _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&dst->t0);
   _fx_free_LN15C_form__cstmt_t(&dst->t1);
}

static void _fx_copy_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(
   struct _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t* src,
   struct _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* t0,
   struct _fx_LN15C_form__cstmt_t_data_t* t1,
   struct _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T2R9Ast__id_tLN15C_form__cstmt_t(struct _fx_T2R9Ast__id_tLN15C_form__cstmt_t* dst)
{
   _fx_free_LN15C_form__cstmt_t(&dst->t1);
}

static void _fx_copy_T2R9Ast__id_tLN15C_form__cstmt_t(
   struct _fx_T2R9Ast__id_tLN15C_form__cstmt_t* src,
   struct _fx_T2R9Ast__id_tLN15C_form__cstmt_t* dst)
{
   dst->t0 = src->t0;
   FX_COPY_PTR(src->t1, &dst->t1);
}

static void _fx_make_T2R9Ast__id_tLN15C_form__cstmt_t(
   struct _fx_R9Ast__id_t* t0,
   struct _fx_LN15C_form__cstmt_t_data_t* t1,
   struct _fx_T2R9Ast__id_tLN15C_form__cstmt_t* fx_result)
{
   fx_result->t0 = *t0;
   FX_COPY_PTR(t1, &fx_result->t1);
}

static void _fx_free_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(
   struct _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t* dst)
{
   _fx_free_LN15C_form__cstmt_t(&dst->t0);
   fx_free_list_simple(&dst->t1);
   _fx_free_LN14C_form__cexp_t(&dst->t2);
   _fx_free_Rt6Set__t1R9Ast__id_t(&dst->t3);
}

static void _fx_copy_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(
   struct _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t* src,
   struct _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t* dst)
{
   FX_COPY_PTR(src->t0, &dst->t0);
   FX_COPY_PTR(src->t1, &dst->t1);
   FX_COPY_PTR(src->t2, &dst->t2);
   _fx_copy_Rt6Set__t1R9Ast__id_t(&src->t3, &dst->t3);
}

static void _fx_make_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(
   struct _fx_LN15C_form__cstmt_t_data_t* t0,
   struct _fx_LR9Ast__id_t_data_t* t1,
   struct _fx_LN14C_form__cexp_t_data_t* t2,
   struct _fx_Rt6Set__t1R9Ast__id_t* t3,
   struct _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t* fx_result)
{
   FX_COPY_PTR(t0, &fx_result->t0);
   FX_COPY_PTR(t1, &fx_result->t1);
   FX_COPY_PTR(t2, &fx_result->t2);
   _fx_copy_Rt6Set__t1R9Ast__id_t(t3, &fx_result->t3);
}

_fx_Nt6option1N14C_form__cexp_t _fx_g18C_gen_fdecls__None = { 1 };
_fx_Nt6option1R9Ast__id_t _fx_g20C_gen_fdecls__None1_ = { 1 };
_fx_N12Set__color_t _fx_g17C_gen_fdecls__Red = { 1 };
_fx_N12Set__color_t _fx_g19C_gen_fdecls__Black = { 2 };
_fx_Nt11Set__tree_t1R9Ast__id_t _fx_g19C_gen_fdecls__Empty = 0;
_fx_N19C_form__ctyp_attr_t _fx_g23C_gen_fdecls__CTypConst = { 1 };
_fx_N19C_form__ctyp_attr_t _fx_g24C_gen_fdecls__CTypStatic = { 3 };
_fx_N19C_form__carg_attr_t _fx_g27C_gen_fdecls__CArgPassByPtr = { 1 };
_fx_N19C_form__carg_attr_t _fx_g24C_gen_fdecls__CArgRetVal = { 2 };
_fx_N19C_form__carg_attr_t _fx_g20C_gen_fdecls__CArgFV = { 3 };
static _fx_N14C_form__ctyp_t_data_t CTypInt_data_3 = { 1, 1 };
_fx_N14C_form__ctyp_t _fx_g21C_gen_fdecls__CTypInt = &CTypInt_data_3;
static _fx_N14C_form__ctyp_t_data_t CTypCInt_data_3 = { 1, 2 };
_fx_N14C_form__ctyp_t _fx_g22C_gen_fdecls__CTypCInt = &CTypCInt_data_3;
static _fx_N14C_form__ctyp_t_data_t CTypVoid_data_3 = { 1, 8 };
_fx_N14C_form__ctyp_t _fx_g22C_gen_fdecls__CTypVoid = &CTypVoid_data_3;
static _fx_N14C_form__ctyp_t_data_t CTypString_data_3 = { 1, 12 };
_fx_N14C_form__ctyp_t _fx_g24C_gen_fdecls__CTypString = &CTypString_data_3;
static _fx_N14C_form__ctyp_t_data_t CTypExn_data_3 = { 1, 13 };
_fx_N14C_form__ctyp_t _fx_g21C_gen_fdecls__CTypExn = &CTypExn_data_3;
FX_EXTERN_C int _fx_M3AstFM6__eq__B2RM4id_tRM4id_t(
   struct _fx_R9Ast__id_t* a_0,
   struct _fx_R9Ast__id_t* b_0,
   bool* fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6K_formFM8get_kvalRM9kdefval_t2R9Ast__id_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* n_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_R17K_form__kdefval_t* fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM7dup_idcR9Ast__id_t2iR9Ast__id_t(
   int_ m_idx_0,
   struct _fx_R9Ast__id_t* old_id_0,
   struct _fx_R9Ast__id_t* fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M3AstFM2ppS1RM4id_t(struct _fx_R9Ast__id_t* i_0, fx_str_t* fx_result, void* fx_fv);

FX_EXTERN_C int _fx_F6stringS1i(int_ a, fx_str_t* fx_result, void* fx_fv);

FX_EXTERN_C int _fx_M11C_gen_typesFM9ktyp2ctypN14C_form__ctyp_t2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__ktyp_t_data_t* t_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_N14C_form__ctyp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M10K_annotateFM11get_ktpropsR17K_form__ktprops_t2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__ktyp_t_data_t* t_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_R17K_form__ktprops_t* fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM8make_ptrN14C_form__ctyp_t1N14C_form__ctyp_t(
   struct _fx_N14C_form__ctyp_t_data_t* t_0,
   struct _fx_N14C_form__ctyp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM14make_const_ptrN14C_form__ctyp_t1N14C_form__ctyp_t(
   struct _fx_N14C_form__ctyp_t_data_t* t_0,
   struct _fx_N14C_form__ctyp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM10add_cf_argv4R9Ast__id_tN14C_form__ctyp_tSR10Ast__loc_t(
   struct _fx_R9Ast__id_t* v_0,
   struct _fx_N14C_form__ctyp_t_data_t* ctyp_0,
   fx_str_t* cname_0,
   struct _fx_R10Ast__loc_t* loc_0,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM7gen_idcR9Ast__id_t2iS(
   int_ m_idx_0,
   fx_str_t* s_0,
   struct _fx_R9Ast__id_t* fx_result,
   void* fx_fv);

FX_EXTERN_C_VAL(struct _fx_N14C_form__ctyp_t_data_t* _fx_g23C_form__std_CTypVoidPtr)
FX_EXTERN_C_VAL(struct _fx_R9Ast__id_t _fx_g9Ast__noid)
FX_EXTERN_C void _fx_M6C_formFM4CFunN15C_form__cinfo_t1rRM9cdeffun_t(
   struct _fx_rR17C_form__cdeffun_t_data_t* arg0,
   struct _fx_N15C_form__cinfo_t* fx_result);

FX_EXTERN_C int _fx_M6C_formFM13set_idc_entryv2R9Ast__id_tN15C_form__cinfo_t(
   struct _fx_R9Ast__id_t* i_0,
   struct _fx_N15C_form__cinfo_t* entry_0,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM7CDefFunN15C_form__cstmt_t1rRM9cdeffun_t(
   struct _fx_rR17C_form__cdeffun_t_data_t* arg0,
   struct _fx_N15C_form__cstmt_t_data_t** fx_result);

FX_EXTERN_C int _fx_M6C_formFM8CTypNameN14C_form__ctyp_t1R9Ast__id_t(
   struct _fx_R9Ast__id_t* arg0,
   struct _fx_N14C_form__ctyp_t_data_t** fx_result);

FX_EXTERN_C int _fx_M3AstFM6get_idRM4id_t1S(fx_str_t* s_0, struct _fx_R9Ast__id_t* fx_result, void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* i_0,
   struct _fx_N14C_form__ctyp_t_data_t* t_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_N14C_form__cexp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C_VAL(struct _fx_N14C_form__ctyp_t_data_t* _fx_g21C_form__std_fx_free_t)
FX_EXTERN_C int _fx_M6C_formFM10cexp_arrowN14C_form__cexp_t3N14C_form__cexp_tR9Ast__id_tN14C_form__ctyp_t(
   struct _fx_N14C_form__cexp_t_data_t* e_0,
   struct _fx_R9Ast__id_t* m_id_0,
   struct _fx_N14C_form__ctyp_t_data_t* t_0,
   struct _fx_N14C_form__cexp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C int
   _fx_M11C_gen_typesFM13gen_free_codeLN15C_form__cstmt_t6N14C_form__cexp_tN14C_form__ctyp_tBBLN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_N14C_form__cexp_t_data_t* elem_exp_0,
   struct _fx_N14C_form__ctyp_t_data_t* ctyp_0,
   bool let_macro_0,
   bool use_if_0,
   struct _fx_LN15C_form__cstmt_t_data_t* code_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_LN15C_form__cstmt_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C_VAL(struct _fx_R9Ast__id_t _fx_g19C_form__std_fx_free)
FX_EXTERN_C int _fx_M6C_formFM9make_callN14C_form__cexp_t4R9Ast__id_tLN14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* f_0,
   struct _fx_LN14C_form__cexp_t_data_t* args_0,
   struct _fx_N14C_form__ctyp_t_data_t* rt_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_N14C_form__cexp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM4CExpN15C_form__cstmt_t1N14C_form__cexp_t(
   struct _fx_N14C_form__cexp_t_data_t* arg0,
   struct _fx_N15C_form__cstmt_t_data_t** fx_result);

FX_EXTERN_C int _fx_M8K_mangleFM9remove_fxS1S(fx_str_t* str_0, fx_str_t* fx_result, void* fx_fv);

FX_EXTERN_C int _fx_M3AstFM17default_fun_flagsRM11fun_flags_t0(struct _fx_R16Ast__fun_flags_t* fx_result, void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM10CTypStructN14C_form__ctyp_t2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t(
   struct _fx_Nt6option1R9Ast__id_t* arg0,
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* arg1,
   struct _fx_N14C_form__ctyp_t_data_t** fx_result);

FX_EXTERN_C void _fx_M6C_formFM4CTypN15C_form__cinfo_t1rRM9cdeftyp_t(
   struct _fx_rR17C_form__cdeftyp_t_data_t* arg0,
   struct _fx_N15C_form__cinfo_t* fx_result);

FX_EXTERN_C int _fx_M6C_formFM7CDefTypN15C_form__cstmt_t1rRM9cdeftyp_t(
   struct _fx_rR17C_form__cdeftyp_t_data_t* arg0,
   struct _fx_N15C_form__cstmt_t_data_t** fx_result);

FX_EXTERN_C int _fx_M3AstFM17default_val_flagsRM11val_flags_t0(struct _fx_R16Ast__val_flags_t* fx_result, void* fx_fv);

FX_EXTERN_C int
   _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* n_0,
   struct _fx_N14C_form__ctyp_t_data_t* t_0,
   struct _fx_R16Ast__val_flags_t* flags_0,
   fx_str_t* cname_0,
   struct _fx_Nt6option1N14C_form__cexp_t* e_opt_0,
   struct _fx_LN15C_form__cstmt_t_data_t* code_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t* fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM14make_dummy_expN14C_form__cexp_t1R10Ast__loc_t(
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_N14C_form__cexp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C_VAL(struct _fx_R9Ast__id_t _fx_g33C_form__std_FX_REG_SIMPLE_STD_EXN)
FX_EXTERN_C int _fx_M3AstFM18get_qualified_nameS2SLN12Ast__scope_t(
   fx_str_t* name_0,
   struct _fx_LN12Ast__scope_t_data_t* sc_0,
   fx_str_t* fx_result,
   void* fx_fv);

FX_EXTERN_C void _fx_M6K_formFM10KLitStringN14K_form__klit_t1S(fx_str_t* arg0, struct _fx_N14K_form__klit_t* fx_result);

FX_EXTERN_C int _fx_M6C_formFM7CExpLitN14C_form__cexp_t2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_N14K_form__klit_t* arg0,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* arg1,
   struct _fx_N14C_form__cexp_t_data_t** fx_result);

FX_EXTERN_C int _fx_M8K_mangleFM6add_fxS1S(fx_str_t* str_0, fx_str_t* fx_result, void* fx_fv);

FX_EXTERN_C_VAL(struct _fx_N14C_form__ctyp_t_data_t* _fx_g25C_form__std_fx_exn_info_t)
FX_EXTERN_C_VAL(struct _fx_R9Ast__id_t _fx_g29C_form__std_FX_REG_SIMPLE_EXN)
FX_EXTERN_C void _fx_M6C_formFM4CExnN15C_form__cinfo_t1rRM9cdefexn_t(
   struct _fx_rR17C_form__cdefexn_t_data_t* arg0,
   struct _fx_N15C_form__cinfo_t* fx_result);

FX_EXTERN_C_VAL(struct _fx_R9Ast__id_t _fx_g22C_form__std_FX_REG_EXN)
FX_EXTERN_C int _fx_M6C_formFM13cexp_get_addrN14C_form__cexp_t1N14C_form__cexp_t(
   struct _fx_N14C_form__cexp_t_data_t* e_0,
   struct _fx_N14C_form__cexp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM6cinfo_N15C_form__cinfo_t2R9Ast__id_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* i_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_N15C_form__cinfo_t* fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M3AstFM11compile_errE2RM5loc_tS(
   struct _fx_R10Ast__loc_t* loc_0,
   fx_str_t* msg_0,
   fx_exn_t* fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM12CTypRawArrayN14C_form__ctyp_t2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(
   struct _fx_LN19C_form__ctyp_attr_t_data_t* arg0,
   struct _fx_N14C_form__ctyp_t_data_t* arg1,
   struct _fx_N14C_form__ctyp_t_data_t** fx_result);

FX_EXTERN_C_VAL(struct _fx_Rt6Set__t1R9Ast__id_t _fx_g16Ast__empty_idset)
FX_EXTERN_C int _fx_M6C_formFM8CExpInitN14C_form__cexp_t2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(
   struct _fx_LN14C_form__cexp_t_data_t* arg0,
   struct _fx_T2N14C_form__ctyp_tR10Ast__loc_t* arg1,
   struct _fx_N14C_form__cexp_t_data_t** fx_result);

FX_EXTERN_C int _fx_M3AstFM21default_tempval_flagsRM11val_flags_t0(struct _fx_R16Ast__val_flags_t* fx_result, void* fx_fv);

FX_EXTERN_C int _fx_M6K_formFM8KTypNameN14K_form__ktyp_t1R9Ast__id_t(
   struct _fx_R9Ast__id_t* arg0,
   struct _fx_N14K_form__ktyp_t_data_t** fx_result);

FX_EXTERN_C int _fx_M6K_formFM18get_kinterface_optNt6option1rRM15kdefinterface_t2N14K_form__ktyp_tR10Ast__loc_t(
   struct _fx_N14K_form__ktyp_t_data_t* t_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_Nt6option1rR23K_form__kdefinterface_t* fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM12make_int_expN14C_form__cexp_t2iR10Ast__loc_t(
   int_ i_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_N14C_form__cexp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM11make_id_expN14C_form__cexp_t2R9Ast__id_tR10Ast__loc_t(
   struct _fx_R9Ast__id_t* i_0,
   struct _fx_R10Ast__loc_t* loc_0,
   struct _fx_N14C_form__cexp_t_data_t** fx_result,
   void* fx_fv);

FX_EXTERN_C int _fx_M6C_formFM10CStmtBlockN15C_form__cstmt_t2LN15C_form__cstmt_tR10Ast__loc_t(
   struct _fx_LN15C_form__cstmt_t_data_t* arg0,
   struct _fx_R10Ast__loc_t* arg1,
   struct _fx_N15C_form__cstmt_t_data_t** fx_result);

FX_EXTERN_C void _fx_M12C_gen_fdeclsFM4SomeNt6option1N14C_form__cexp_t1N14C_form__cexp_t(
   struct _fx_N14C_form__cexp_t_data_t* arg0,
   struct _fx_Nt6option1N14C_form__cexp_t* fx_result)
{
   fx_result->tag = 2;
   FX_COPY_PTR(arg0, &fx_result->u.Some);
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM6__ne__B2R9Ast__id_tR9Ast__id_t(
   struct _fx_R9Ast__id_t* a_0,
   struct _fx_R9Ast__id_t* b_0,
   bool* fx_result,
   void* fx_fv)
{
   int fx_status = 0;
   bool res_0;
   FX_CALL(_fx_M3AstFM6__eq__B2RM4id_tRM4id_t(a_0, b_0, &res_0, 0), _fx_cleanup);
   *fx_result = !res_0;

_fx_cleanup: ;
   return fx_status;
}

FX_EXTERN_C int_ _fx_M12C_gen_fdeclsFM6lengthi1LR9Ast__id_t(struct _fx_LR9Ast__id_t_data_t* l, void* fx_fv)
{
   
return fx_list_length(l);

}

FX_EXTERN_C void _fx_M12C_gen_fdeclsFM5link2LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(
   struct _fx_LN15C_form__cstmt_t_data_t* l1,
   struct _fx_LN15C_form__cstmt_t_data_t* l2,
   struct _fx_LN15C_form__cstmt_t_data_t** fx_result,
   void* fx_fv)
{
   
fx_link_lists(l1, l2, fx_result);

}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(
   struct _fx_LN15C_form__cstmt_t_data_t* l1_0,
   struct _fx_LN15C_form__cstmt_t_data_t* l2_0,
   struct _fx_LN15C_form__cstmt_t_data_t** fx_result,
   void* fx_fv)
{
   int fx_status = 0;
   if (l1_0 == 0) {
      FX_COPY_PTR(l2_0, fx_result);
   }
   else if (l2_0 == 0) {
      FX_COPY_PTR(l1_0, fx_result);
   }
   else {
      _fx_LN15C_form__cstmt_t v_0 = 0;
      _fx_LN15C_form__cstmt_t lstend_0 = 0;
      _fx_LN15C_form__cstmt_t lst_0 = l1_0;
      for (; lst_0; lst_0 = lst_0->tl) {
         _fx_N15C_form__cstmt_t x_0 = lst_0->hd;
         _fx_LN15C_form__cstmt_t node_0 = 0;
         FX_CALL(_fx_cons_LN15C_form__cstmt_t(x_0, 0, false, &node_0), _fx_catch_0);
         FX_LIST_APPEND(v_0, lstend_0, node_0);

      _fx_catch_0: ;
         FX_CHECK_EXN(_fx_catch_1);
      }
      _fx_M12C_gen_fdeclsFM5link2LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(v_0, l2_0, fx_result, 0);

   _fx_catch_1: ;
      if (v_0) {
         _fx_free_LN15C_form__cstmt_t(&v_0);
      }
   }
   return fx_status;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM8length1_i1LR9Ast__id_t(struct _fx_LR9Ast__id_t_data_t* l_0, int_* fx_result, void* fx_fv)
{
   int fx_status = 0;
   *fx_result = _fx_M12C_gen_fdeclsFM6lengthi1LR9Ast__id_t(l_0, 0);
   return fx_status;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM3revLN14C_form__cexp_t1LN14C_form__cexp_t(
   struct _fx_LN14C_form__cexp_t_data_t* l_0,
   struct _fx_LN14C_form__cexp_t_data_t** fx_result,
   void* fx_fv)
{
   _fx_LN14C_form__cexp_t __fold_result___0 = 0;
   int fx_status = 0;
   _fx_LN14C_form__cexp_t lst_0 = l_0;
   for (; lst_0; lst_0 = lst_0->tl) {
      _fx_LN14C_form__cexp_t r_0 = 0;
      _fx_N14C_form__cexp_t a_0 = lst_0->hd;
      FX_COPY_PTR(__fold_result___0, &r_0);
      FX_CALL(_fx_cons_LN14C_form__cexp_t(a_0, r_0, false, &r_0), _fx_catch_0);
      _fx_free_LN14C_form__cexp_t(&__fold_result___0);
      FX_COPY_PTR(r_0, &__fold_result___0);

   _fx_catch_0: ;
      if (r_0) {
         _fx_free_LN14C_form__cexp_t(&r_0);
      }
      FX_CHECK_EXN(_fx_cleanup);
   }
   FX_COPY_PTR(__fold_result___0, fx_result);

_fx_cleanup: ;
   if (__fold_result___0) {
      _fx_free_LN14C_form__cexp_t(&__fold_result___0);
   }
   return fx_status;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM3revLT2R9Ast__id_tN14C_form__ctyp_t1LT2R9Ast__id_tN14C_form__ctyp_t(
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t* l_0,
   struct _fx_LT2R9Ast__id_tN14C_form__ctyp_t_data_t** fx_result,
   void* fx_fv)
{
   _fx_LT2R9Ast__id_tN14C_form__ctyp_t __fold_result___0 = 0;
   int fx_status = 0;
   _fx_LT2R9Ast__id_tN14C_form__ctyp_t lst_0 = l_0;
   for (; lst_0; lst_0 = lst_0->tl) {
      _fx_LT2R9Ast__id_tN14C_form__ctyp_t r_0 = 0;
      _fx_T2R9Ast__id_tN14C_form__ctyp_t* a_0 = &lst_0->hd;
      FX_COPY_PTR(__fold_result___0, &r_0);
      FX_CALL(_fx_cons_LT2R9Ast__id_tN14C_form__ctyp_t(a_0, r_0, false, &r_0), _fx_catch_0);
      _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&__fold_result___0);
      FX_COPY_PTR(r_0, &__fold_result___0);

   _fx_catch_0: ;
      if (r_0) {
         _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&r_0);
      }
      FX_CHECK_EXN(_fx_cleanup);
   }
   FX_COPY_PTR(__fold_result___0, fx_result);

_fx_cleanup: ;
   if (__fold_result___0) {
      _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&__fold_result___0);
   }
   return fx_status;
}

FX_EXTERN_C int
   _fx_M12C_gen_fdeclsFM3revLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t1LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t* l_0,
   struct _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t_data_t** fx_result,
   void* fx_fv)
{
   _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t __fold_result___0 = 0;
   int fx_status = 0;
   _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t lst_0 = l_0;
   for (; lst_0; lst_0 = lst_0->tl) {
      _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t r_0 = 0;
      _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t* a_0 = &lst_0->hd;
      FX_COPY_PTR(__fold_result___0, &r_0);
      FX_CALL(_fx_cons_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(a_0, r_0, false, &r_0), _fx_catch_0);
      _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&__fold_result___0);
      FX_COPY_PTR(r_0, &__fold_result___0);

   _fx_catch_0: ;
      if (r_0) {
         _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&r_0);
      }
      FX_CHECK_EXN(_fx_cleanup);
   }
   FX_COPY_PTR(__fold_result___0, fx_result);

_fx_cleanup: ;
   if (__fold_result___0) {
      _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&__fold_result___0);
   }
   return fx_status;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM3revLN15C_form__cstmt_t1LN15C_form__cstmt_t(
   struct _fx_LN15C_form__cstmt_t_data_t* l_0,
   struct _fx_LN15C_form__cstmt_t_data_t** fx_result,
   void* fx_fv)
{
   _fx_LN15C_form__cstmt_t __fold_result___0 = 0;
   int fx_status = 0;
   _fx_LN15C_form__cstmt_t lst_0 = l_0;
   for (; lst_0; lst_0 = lst_0->tl) {
      _fx_LN15C_form__cstmt_t r_0 = 0;
      _fx_N15C_form__cstmt_t a_0 = lst_0->hd;
      FX_COPY_PTR(__fold_result___0, &r_0);
      FX_CALL(_fx_cons_LN15C_form__cstmt_t(a_0, r_0, false, &r_0), _fx_catch_0);
      _fx_free_LN15C_form__cstmt_t(&__fold_result___0);
      FX_COPY_PTR(r_0, &__fold_result___0);

   _fx_catch_0: ;
      if (r_0) {
         _fx_free_LN15C_form__cstmt_t(&r_0);
      }
      FX_CHECK_EXN(_fx_cleanup);
   }
   FX_COPY_PTR(__fold_result___0, fx_result);

_fx_cleanup: ;
   if (__fold_result___0) {
      _fx_free_LN15C_form__cstmt_t(&__fold_result___0);
   }
   return fx_status;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM3revLR9Ast__id_t1LR9Ast__id_t(
   struct _fx_LR9Ast__id_t_data_t* l_0,
   struct _fx_LR9Ast__id_t_data_t** fx_result,
   void* fx_fv)
{
   _fx_LR9Ast__id_t __fold_result___0 = 0;
   int fx_status = 0;
   _fx_LR9Ast__id_t lst_0 = l_0;
   for (; lst_0; lst_0 = lst_0->tl) {
      _fx_LR9Ast__id_t r_0 = 0;
      _fx_R9Ast__id_t* a_0 = &lst_0->hd;
      FX_COPY_PTR(__fold_result___0, &r_0);
      FX_CALL(_fx_cons_LR9Ast__id_t(a_0, r_0, false, &r_0), _fx_catch_0);
      FX_FREE_LIST_SIMPLE(&__fold_result___0);
      FX_COPY_PTR(r_0, &__fold_result___0);

   _fx_catch_0: ;
      FX_FREE_LIST_SIMPLE(&r_0);
      FX_CHECK_EXN(_fx_cleanup);
   }
   FX_COPY_PTR(__fold_result___0, fx_result);

_fx_cleanup: ;
   FX_FREE_LIST_SIMPLE(&__fold_result___0);
   return fx_status;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM6lengthi1S(fx_str_t* s_0, int_* fx_result, void* fx_fv)
{
   int fx_status = 0;
   *fx_result = FX_STR_LENGTH(*s_0);
   return fx_status;
}

FX_EXTERN_C int
   _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
   struct _fx_N12Set__color_t* arg0,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* arg1,
   struct _fx_R9Ast__id_t* arg2,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* arg3,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t** fx_result)
{
   FX_MAKE_RECURSIVE_VARIANT_IMPL_START(_fx_Nt11Set__tree_t1R9Ast__id_t);
   v->u.Node.t0 = *arg0;
   FX_COPY_PTR(arg1, &v->u.Node.t1);
   v->u.Node.t2 = *arg2;
   FX_COPY_PTR(arg3, &v->u.Node.t3);
   return 0;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM3memB2Rt6Set__t1R9Ast__id_tR9Ast__id_t(
   struct _fx_Rt6Set__t1R9Ast__id_t* s_0,
   struct _fx_R9Ast__id_t* x_0,
   bool* fx_result,
   void* fx_fv)
{
   _fx_Nt11Set__tree_t1R9Ast__id_t v_0 = 0;
   _fx_FPi2R9Ast__id_tR9Ast__id_t v_1 = {0};
   _fx_Nt11Set__tree_t1R9Ast__id_t t_0 = 0;
   _fx_FPi2R9Ast__id_tR9Ast__id_t cmp_0 = {0};
   int fx_status = 0;
   FX_COPY_PTR(s_0->root, &v_0);
   FX_COPY_FP(&s_0->cmp, &v_1);
   bool result_0 = 0;
   FX_COPY_PTR(v_0, &t_0);
   _fx_R9Ast__id_t x_1 = *x_0;
   FX_COPY_FP(&v_1, &cmp_0);
   for (;;) {
      _fx_Nt11Set__tree_t1R9Ast__id_t t_1 = 0;
      _fx_FPi2R9Ast__id_tR9Ast__id_t cmp_1 = {0};
      FX_COPY_PTR(t_0, &t_1);
      _fx_R9Ast__id_t x_2 = x_1;
      FX_COPY_FP(&cmp_0, &cmp_1);
      if ((t_1 != 0) + 1 == 2) {
         _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_0 = &t_1->u.Node;
         int_ c_0;
         FX_CALL(cmp_1.fp(&x_2, &vcase_0->t2, &c_0, cmp_1.fcv), _fx_catch_0);
         if (c_0 < 0) {
            _fx_Nt11Set__tree_t1R9Ast__id_t* l_0 = &vcase_0->t1;
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&t_0);
            FX_COPY_PTR(*l_0, &t_0);
            x_1 = x_2;
            FX_FREE_FP(&cmp_0);
            FX_COPY_FP(&cmp_1, &cmp_0);
         }
         else if (c_0 > 0) {
            _fx_Nt11Set__tree_t1R9Ast__id_t* r_0 = &vcase_0->t3;
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&t_0);
            FX_COPY_PTR(*r_0, &t_0);
            x_1 = x_2;
            FX_FREE_FP(&cmp_0);
            FX_COPY_FP(&cmp_1, &cmp_0);
         }
         else {
            result_0 = true; FX_BREAK(_fx_catch_0);
         }

      _fx_catch_0: ;
      }
      else {
         result_0 = false; FX_BREAK(_fx_catch_1);  _fx_catch_1: ;
      }
      FX_CHECK_EXN(_fx_catch_2);

   _fx_catch_2: ;
      FX_FREE_FP(&cmp_1);
      if (t_1) {
         _fx_free_Nt11Set__tree_t1R9Ast__id_t(&t_1);
      }
      FX_CHECK_BREAK();
      FX_CHECK_EXN(_fx_cleanup);
   }
   *fx_result = result_0;

_fx_cleanup: ;
   if (v_0) {
      _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_0);
   }
   FX_FREE_FP(&v_1);
   if (t_0) {
      _fx_free_Nt11Set__tree_t1R9Ast__id_t(&t_0);
   }
   FX_FREE_FP(&cmp_0);
   return fx_status;
}

FX_EXTERN_C int
   _fx_M12C_gen_fdeclsFM12balance_leftNt11Set__tree_t1R9Ast__id_t3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* l_0,
   struct _fx_R9Ast__id_t* x_0,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* r_0,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t** fx_result,
   void* fx_fv)
{
   int fx_status = 0;
   if ((l_0 != 0) + 1 == 2) {
      _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_0 = &l_0->u.Node;
      if (vcase_0->t0.tag == 1) {
         _fx_Nt11Set__tree_t1R9Ast__id_t v_0 = vcase_0->t1;
         if ((v_0 != 0) + 1 == 2) {
            _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_1 = &v_0->u.Node;
            if (vcase_1->t0.tag == 1) {
               _fx_Nt11Set__tree_t1R9Ast__id_t v_1 = 0;
               _fx_Nt11Set__tree_t1R9Ast__id_t v_2 = 0;
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, vcase_1->t1, &vcase_1->t2, vcase_1->t3, &v_1), _fx_catch_0);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, vcase_0->t3, x_0, r_0, &v_2), _fx_catch_0);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g17C_gen_fdecls__Red, v_1, &vcase_0->t2, v_2, fx_result), _fx_catch_0);

            _fx_catch_0: ;
               if (v_2) {
                  _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_2);
               }
               if (v_1) {
                  _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_1);
               }
               goto _fx_endmatch_0;
            }
         }
      }
   }
   if ((l_0 != 0) + 1 == 2) {
      _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_2 = &l_0->u.Node;
      if (vcase_2->t0.tag == 1) {
         _fx_Nt11Set__tree_t1R9Ast__id_t v_3 = vcase_2->t3;
         if ((v_3 != 0) + 1 == 2) {
            _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_3 = &v_3->u.Node;
            if (vcase_3->t0.tag == 1) {
               _fx_Nt11Set__tree_t1R9Ast__id_t v_4 = 0;
               _fx_Nt11Set__tree_t1R9Ast__id_t v_5 = 0;
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, vcase_2->t1, &vcase_2->t2, vcase_3->t1, &v_4), _fx_catch_1);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, vcase_3->t3, x_0, r_0, &v_5), _fx_catch_1);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g17C_gen_fdecls__Red, v_4, &vcase_3->t2, v_5, fx_result), _fx_catch_1);

            _fx_catch_1: ;
               if (v_5) {
                  _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_5);
               }
               if (v_4) {
                  _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_4);
               }
               goto _fx_endmatch_0;
            }
         }
      }
   }
   FX_CALL(
      _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
         &_fx_g19C_gen_fdecls__Black, l_0, x_0, r_0, fx_result), _fx_catch_2);

_fx_catch_2: ;

_fx_endmatch_0: ;
   return fx_status;
}

FX_EXTERN_C int
   _fx_M12C_gen_fdeclsFM13balance_rightNt11Set__tree_t1R9Ast__id_t3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* l_0,
   struct _fx_R9Ast__id_t* x_0,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* r_0,
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t** fx_result,
   void* fx_fv)
{
   int fx_status = 0;
   if ((r_0 != 0) + 1 == 2) {
      _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_0 = &r_0->u.Node;
      if (vcase_0->t0.tag == 1) {
         _fx_Nt11Set__tree_t1R9Ast__id_t v_0 = vcase_0->t1;
         if ((v_0 != 0) + 1 == 2) {
            _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_1 = &v_0->u.Node;
            if (vcase_1->t0.tag == 1) {
               _fx_Nt11Set__tree_t1R9Ast__id_t v_1 = 0;
               _fx_Nt11Set__tree_t1R9Ast__id_t v_2 = 0;
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, l_0, x_0, vcase_1->t1, &v_1), _fx_catch_0);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, vcase_1->t3, &vcase_0->t2, vcase_0->t3, &v_2), _fx_catch_0);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g17C_gen_fdecls__Red, v_1, &vcase_1->t2, v_2, fx_result), _fx_catch_0);

            _fx_catch_0: ;
               if (v_2) {
                  _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_2);
               }
               if (v_1) {
                  _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_1);
               }
               goto _fx_endmatch_0;
            }
         }
      }
   }
   if ((r_0 != 0) + 1 == 2) {
      _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_2 = &r_0->u.Node;
      if (vcase_2->t0.tag == 1) {
         _fx_Nt11Set__tree_t1R9Ast__id_t v_3 = vcase_2->t3;
         if ((v_3 != 0) + 1 == 2) {
            _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_3 = &v_3->u.Node;
            if (vcase_3->t0.tag == 1) {
               _fx_Nt11Set__tree_t1R9Ast__id_t v_4 = 0;
               _fx_Nt11Set__tree_t1R9Ast__id_t v_5 = 0;
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, l_0, x_0, vcase_2->t1, &v_4), _fx_catch_1);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, vcase_3->t1, &vcase_3->t2, vcase_3->t3, &v_5), _fx_catch_1);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g17C_gen_fdecls__Red, v_4, &vcase_2->t2, v_5, fx_result), _fx_catch_1);

            _fx_catch_1: ;
               if (v_5) {
                  _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_5);
               }
               if (v_4) {
                  _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_4);
               }
               goto _fx_endmatch_0;
            }
         }
      }
   }
   FX_CALL(
      _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
         &_fx_g19C_gen_fdecls__Black, l_0, x_0, r_0, fx_result), _fx_catch_2);

_fx_catch_2: ;

_fx_endmatch_0: ;
   return fx_status;
}

FX_EXTERN_C int
   _fx_M12C_gen_fdeclsFM12add_to_tree_T2Nt11Set__tree_t1R9Ast__id_ti3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tFPi2R9Ast__id_tR9Ast__id_t(
   struct _fx_Nt11Set__tree_t1R9Ast__id_t_data_t* t_0,
   struct _fx_R9Ast__id_t* x_0,
   struct _fx_FPi2R9Ast__id_tR9Ast__id_t* cmp_0,
   struct _fx_T2Nt11Set__tree_t1R9Ast__id_ti* fx_result,
   void* fx_fv)
{
   int fx_status = 0;
   FX_CALL(fx_check_stack(), _fx_cleanup);
   int tag_0 = (t_0 != 0) + 1;
   if (tag_0 == 2) {
      _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_0 = &t_0->u.Node;
      if (vcase_0->t0.tag == 1) {
         _fx_T2Nt11Set__tree_t1R9Ast__id_ti v_0 = {0};
         _fx_Nt11Set__tree_t1R9Ast__id_t l_0 = 0;
         _fx_Nt11Set__tree_t1R9Ast__id_t v_1 = 0;
         _fx_T2Nt11Set__tree_t1R9Ast__id_ti v_2 = {0};
         _fx_Nt11Set__tree_t1R9Ast__id_t r_0 = 0;
         _fx_Nt11Set__tree_t1R9Ast__id_t v_3 = 0;
         _fx_Nt11Set__tree_t1R9Ast__id_t r_1 = vcase_0->t3;
         _fx_R9Ast__id_t* y_0 = &vcase_0->t2;
         _fx_Nt11Set__tree_t1R9Ast__id_t l_1 = vcase_0->t1;
         int_ c_0;
         FX_CALL(cmp_0->fp(x_0, y_0, &c_0, cmp_0->fcv), _fx_catch_0);
         if (c_0 < 0) {
            FX_CALL(
               _fx_M12C_gen_fdeclsFM12add_to_tree_T2Nt11Set__tree_t1R9Ast__id_ti3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tFPi2R9Ast__id_tR9Ast__id_t(
                  l_1, x_0, cmp_0, &v_0, 0), _fx_catch_0);
            FX_COPY_PTR(v_0.t0, &l_0);
            int_ dsz_0 = v_0.t1;
            FX_CALL(
               _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                  &_fx_g17C_gen_fdecls__Red, l_0, y_0, r_1, &v_1), _fx_catch_0);
            _fx_make_T2Nt11Set__tree_t1R9Ast__id_ti(v_1, dsz_0, fx_result);
         }
         else if (c_0 > 0) {
            FX_CALL(
               _fx_M12C_gen_fdeclsFM12add_to_tree_T2Nt11Set__tree_t1R9Ast__id_ti3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tFPi2R9Ast__id_tR9Ast__id_t(
                  r_1, x_0, cmp_0, &v_2, 0), _fx_catch_0);
            FX_COPY_PTR(v_2.t0, &r_0);
            int_ dsz_1 = v_2.t1;
            FX_CALL(
               _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                  &_fx_g17C_gen_fdecls__Red, l_1, y_0, r_0, &v_3), _fx_catch_0);
            _fx_make_T2Nt11Set__tree_t1R9Ast__id_ti(v_3, dsz_1, fx_result);
         }
         else {
            _fx_make_T2Nt11Set__tree_t1R9Ast__id_ti(t_0, 0, fx_result);
         }

      _fx_catch_0: ;
         if (v_3) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_3);
         }
         if (r_0) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&r_0);
         }
         _fx_free_T2Nt11Set__tree_t1R9Ast__id_ti(&v_2);
         if (v_1) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_1);
         }
         if (l_0) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&l_0);
         }
         _fx_free_T2Nt11Set__tree_t1R9Ast__id_ti(&v_0);
         goto _fx_endmatch_0;
      }
   }
   if (tag_0 == 2) {
      _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_1 = &t_0->u.Node;
      if (vcase_1->t0.tag == 2) {
         _fx_T2Nt11Set__tree_t1R9Ast__id_ti v_4 = {0};
         _fx_Nt11Set__tree_t1R9Ast__id_t l_2 = 0;
         _fx_Nt11Set__tree_t1R9Ast__id_t v_5 = 0;
         _fx_T2Nt11Set__tree_t1R9Ast__id_ti v_6 = {0};
         _fx_Nt11Set__tree_t1R9Ast__id_t r_2 = 0;
         _fx_Nt11Set__tree_t1R9Ast__id_t v_7 = 0;
         _fx_Nt11Set__tree_t1R9Ast__id_t r_3 = vcase_1->t3;
         _fx_R9Ast__id_t* y_1 = &vcase_1->t2;
         _fx_Nt11Set__tree_t1R9Ast__id_t l_3 = vcase_1->t1;
         int_ c_1;
         FX_CALL(cmp_0->fp(x_0, y_1, &c_1, cmp_0->fcv), _fx_catch_1);
         if (c_1 < 0) {
            FX_CALL(
               _fx_M12C_gen_fdeclsFM12add_to_tree_T2Nt11Set__tree_t1R9Ast__id_ti3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tFPi2R9Ast__id_tR9Ast__id_t(
                  l_3, x_0, cmp_0, &v_4, 0), _fx_catch_1);
            FX_COPY_PTR(v_4.t0, &l_2);
            int_ dsz_2 = v_4.t1;
            if (dsz_2 > 0) {
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM12balance_leftNt11Set__tree_t1R9Ast__id_t3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     l_2, y_1, r_3, &v_5, 0), _fx_catch_1);
            }
            else {
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, l_2, y_1, r_3, &v_5), _fx_catch_1);
            }
            _fx_make_T2Nt11Set__tree_t1R9Ast__id_ti(v_5, dsz_2, fx_result);
         }
         else if (c_1 > 0) {
            FX_CALL(
               _fx_M12C_gen_fdeclsFM12add_to_tree_T2Nt11Set__tree_t1R9Ast__id_ti3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tFPi2R9Ast__id_tR9Ast__id_t(
                  r_3, x_0, cmp_0, &v_6, 0), _fx_catch_1);
            FX_COPY_PTR(v_6.t0, &r_2);
            int_ dsz_3 = v_6.t1;
            if (dsz_3 > 0) {
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM13balance_rightNt11Set__tree_t1R9Ast__id_t3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     l_3, y_1, r_2, &v_7, 0), _fx_catch_1);
            }
            else {
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
                     &_fx_g19C_gen_fdecls__Black, l_3, y_1, r_2, &v_7), _fx_catch_1);
            }
            _fx_make_T2Nt11Set__tree_t1R9Ast__id_ti(v_7, dsz_3, fx_result);
         }
         else {
            _fx_make_T2Nt11Set__tree_t1R9Ast__id_ti(t_0, 0, fx_result);
         }

      _fx_catch_1: ;
         if (v_7) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_7);
         }
         if (r_2) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&r_2);
         }
         _fx_free_T2Nt11Set__tree_t1R9Ast__id_ti(&v_6);
         if (v_5) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_5);
         }
         if (l_2) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&l_2);
         }
         _fx_free_T2Nt11Set__tree_t1R9Ast__id_ti(&v_4);
         goto _fx_endmatch_0;
      }
   }
   _fx_Nt11Set__tree_t1R9Ast__id_t v_8 = 0;
   FX_CALL(
      _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
         &_fx_g17C_gen_fdecls__Red, _fx_g19C_gen_fdecls__Empty, x_0, _fx_g19C_gen_fdecls__Empty, &v_8), _fx_catch_2);
   _fx_make_T2Nt11Set__tree_t1R9Ast__id_ti(v_8, 1, fx_result);

_fx_catch_2: ;
   if (v_8) {
      _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_8);
   }

_fx_endmatch_0: ;

_fx_cleanup: ;
   return fx_status;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM3addRt6Set__t1R9Ast__id_t2Rt6Set__t1R9Ast__id_tR9Ast__id_t(
   struct _fx_Rt6Set__t1R9Ast__id_t* s_0,
   struct _fx_R9Ast__id_t* x_0,
   struct _fx_Rt6Set__t1R9Ast__id_t* fx_result,
   void* fx_fv)
{
   _fx_Nt11Set__tree_t1R9Ast__id_t v_0 = 0;
   _fx_FPi2R9Ast__id_tR9Ast__id_t v_1 = {0};
   _fx_T2Nt11Set__tree_t1R9Ast__id_ti v_2 = {0};
   _fx_Nt11Set__tree_t1R9Ast__id_t t_0 = 0;
   _fx_T2Nt11Set__tree_t1R9Ast__id_tB v_3 = {0};
   _fx_Nt11Set__tree_t1R9Ast__id_t t_1 = 0;
   _fx_FPi2R9Ast__id_tR9Ast__id_t v_4 = {0};
   int fx_status = 0;
   FX_COPY_PTR(s_0->root, &v_0);
   FX_COPY_FP(&s_0->cmp, &v_1);
   FX_CALL(
      _fx_M12C_gen_fdeclsFM12add_to_tree_T2Nt11Set__tree_t1R9Ast__id_ti3Nt11Set__tree_t1R9Ast__id_tR9Ast__id_tFPi2R9Ast__id_tR9Ast__id_t(
         v_0, x_0, &v_1, &v_2, 0), _fx_cleanup);
   FX_COPY_PTR(v_2.t0, &t_0);
   int_ dsz_0 = v_2.t1;
   if ((t_0 != 0) + 1 == 2) {
      _fx_T4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t* vcase_0 = &t_0->u.Node;
      if (vcase_0->t0.tag == 1) {
         _fx_Nt11Set__tree_t1R9Ast__id_t v_5 = 0;
         FX_CALL(
            _fx_M12C_gen_fdeclsFM4NodeNt11Set__tree_t1R9Ast__id_t4N12Set__color_tNt11Set__tree_t1R9Ast__id_tR9Ast__id_tNt11Set__tree_t1R9Ast__id_t(
               &_fx_g19C_gen_fdecls__Black, vcase_0->t1, &vcase_0->t2, vcase_0->t3, &v_5), _fx_catch_0);
         _fx_make_T2Nt11Set__tree_t1R9Ast__id_tB(v_5, false, &v_3);

      _fx_catch_0: ;
         if (v_5) {
            _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_5);
         }
         goto _fx_endmatch_0;
      }
   }
   _fx_make_T2Nt11Set__tree_t1R9Ast__id_tB(t_0, true, &v_3);

_fx_endmatch_0: ;
   FX_CHECK_EXN(_fx_cleanup);
   FX_COPY_PTR(v_3.t0, &t_1);
   FX_COPY_FP(&s_0->cmp, &v_4);
   _fx_make_Rt6Set__t1R9Ast__id_t(t_1, s_0->size + dsz_0, &v_4, fx_result);

_fx_cleanup: ;
   if (v_0) {
      _fx_free_Nt11Set__tree_t1R9Ast__id_t(&v_0);
   }
   FX_FREE_FP(&v_1);
   _fx_free_T2Nt11Set__tree_t1R9Ast__id_ti(&v_2);
   if (t_0) {
      _fx_free_Nt11Set__tree_t1R9Ast__id_t(&t_0);
   }
   _fx_free_T2Nt11Set__tree_t1R9Ast__id_tB(&v_3);
   if (t_1) {
      _fx_free_Nt11Set__tree_t1R9Ast__id_t(&t_1);
   }
   FX_FREE_FP(&v_4);
   return fx_status;
}

FX_EXTERN_C int _fx_M12C_gen_fdeclsFM18convert_all_fdeclsTa3LN15C_form__cstmt_t2iLN14K_form__kexp_t(
   int_ cm_idx_0,
   struct _fx_LN14K_form__kexp_t_data_t* top_code_0,
   struct _fx_Ta3LN15C_form__cstmt_t* fx_result,
   void* fx_fv)
{
   _fx_LN15C_form__cstmt_t top_fcv_decls_0 = 0;
   _fx_LN15C_form__cstmt_t top_func_decls_0 = 0;
   _fx_LN15C_form__cstmt_t mod_init_calls_0 = 0;
   _fx_LN15C_form__cstmt_t mod_exn_data_decls_0 = 0;
   _fx_LN15C_form__cstmt_t v_0 = 0;
   _fx_LN15C_form__cstmt_t v_1 = 0;
   _fx_LN15C_form__cstmt_t v_2 = 0;
   _fx_LN15C_form__cstmt_t v_3 = 0;
   _fx_LN15C_form__cstmt_t v_4 = 0;
   int fx_status = 0;
   _fx_LN14K_form__kexp_t lst_0 = top_code_0;
   for (; lst_0; lst_0 = lst_0->tl) {
      _fx_R17K_form__kdefexn_t v_5 = {0};
      _fx_R21K_form__kdefvariant_t v_6 = {0};
      _fx_N14K_form__kexp_t e_0 = lst_0->hd;
      int tag_0 = FX_REC_VARIANT_TAG(e_0);
      if (tag_0 == 32) {
         _fx_LN12Ast__scope_t kf_scope_0 = 0;
         _fx_N14K_form__kexp_t kf_body_0 = 0;
         _fx_N14K_form__ktyp_t rt_0 = 0;
         _fx_LR9Ast__id_t kf_params_0 = 0;
         fx_str_t kf_cname_0 = {0};
         _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t __fold_result___0 = 0;
         _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t args_0 = 0;
         _fx_N14C_form__ctyp_t crt_0 = 0;
         _fx_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_7 = {0};
         _fx_N14C_form__ctyp_t crt_1 = 0;
         _fx_N14C_form__ctyp_t v_8 = 0;
         _fx_LN19C_form__carg_attr_t v_9 = 0;
         _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_10 = {0};
         _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_11 = 0;
         _fx_N14C_form__ctyp_t new_crt_0 = 0;
         _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t args_1 = 0;
         _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t args_2 = 0;
         _fx_LN19C_form__carg_attr_t v_12 = 0;
         _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_13 = {0};
         _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_14 = 0;
         _fx_R17C_form__cdeffun_t v_15 = {0};
         _fx_rR17C_form__cdeffun_t cf_0 = 0;
         _fx_N15C_form__cinfo_t v_16 = {0};
         _fx_N15C_form__cstmt_t v_17 = 0;
         _fx_LN15C_form__cstmt_t v_18 = 0;
         _fx_R17K_form__kdeffun_t* v_19 = &e_0->u.KDefFun->data;
         _fx_R10Ast__loc_t kf_loc_0 = v_19->kf_loc;
         FX_COPY_PTR(v_19->kf_scope, &kf_scope_0);
         FX_COPY_PTR(v_19->kf_body, &kf_body_0);
         _fx_R16Ast__fun_flags_t kf_flags_0 = v_19->kf_flags;
         _fx_R25K_form__kdefclosureinfo_t kf_closure_0 = v_19->kf_closure;
         FX_COPY_PTR(v_19->kf_rt, &rt_0);
         FX_COPY_PTR(v_19->kf_params, &kf_params_0);
         fx_copy_str(&v_19->kf_cname, &kf_cname_0);
         _fx_R9Ast__id_t kf_name_0 = v_19->kf_name;
         _fx_R9Ast__id_t kci_arg_0 = kf_closure_0.kci_arg;
         bool is_ccode_func_0;
         if (FX_REC_VARIANT_TAG(kf_body_0) == 30) {
            is_ccode_func_0 = true;
         }
         else {
            is_ccode_func_0 = false;
         }
         FX_CHECK_EXN(_fx_catch_3);
         _fx_N17Ast__fun_constr_t ctor_0 = kf_flags_0.fun_flag_ctor;
         int_ idx_0 = 0;
         _fx_LR9Ast__id_t lst_1 = kf_params_0;
         for (; lst_1; lst_1 = lst_1->tl, idx_0 += 1) {
            _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t args_3 = 0;
            _fx_R17K_form__kdefval_t v_20 = {0};
            _fx_N14K_form__ktyp_t t_0 = 0;
            fx_str_t cname_0 = {0};
            fx_str_t v_21 = {0};
            _fx_N14C_form__ctyp_t ctyp_0 = 0;
            _fx_T2N14C_form__ctyp_tLN19C_form__carg_attr_t v_22 = {0};
            _fx_N14C_form__ctyp_t ctyp_1 = 0;
            _fx_LN19C_form__carg_attr_t arg_flags_0 = 0;
            _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_23 = {0};
            _fx_R9Ast__id_t* arg_0 = &lst_1->hd;
            FX_COPY_PTR(__fold_result___0, &args_3);
            FX_CALL(_fx_M6K_formFM8get_kvalRM9kdefval_t2R9Ast__id_tR10Ast__loc_t(arg_0, &kf_loc_0, &v_20, 0), _fx_catch_2);
            FX_COPY_PTR(v_20.kv_typ, &t_0);
            _fx_R9Ast__id_t arg_1;
            if (arg_0->m == 0) {
               FX_CALL(_fx_M6C_formFM7dup_idcR9Ast__id_t2iR9Ast__id_t(cm_idx_0, arg_0, &arg_1, 0), _fx_catch_2);
            }
            else {
               arg_1 = *arg_0;
            }
            if (is_ccode_func_0) {
               FX_CALL(_fx_M3AstFM2ppS1RM4id_t(&arg_1, &cname_0, 0), _fx_catch_2);
            }
            else if (ctor_0.tag != 1) {
               FX_CALL(_fx_F6stringS1i(idx_0, &v_21, 0), _fx_catch_2);
               fx_str_t slit_0 = FX_MAKE_STR("arg");
               {
                  const fx_str_t strs_0[] = { slit_0, v_21 };
                  FX_CALL(fx_strjoin(0, 0, 0, strs_0, 2, &cname_0), _fx_catch_2);
               }
            }
            else {
               fx_str_t slit_1 = FX_MAKE_STR(""); fx_copy_str(&slit_1, &cname_0);
            }
            FX_CALL(_fx_M11C_gen_typesFM9ktyp2ctypN14C_form__ctyp_t2N14K_form__ktyp_tR10Ast__loc_t(t_0, &kf_loc_0, &ctyp_0, 0),
               _fx_catch_2);
            _fx_R17K_form__ktprops_t v_24;
            FX_CALL(
               _fx_M10K_annotateFM11get_ktpropsR17K_form__ktprops_t2N14K_form__ktyp_tR10Ast__loc_t(t_0, &kf_loc_0, &v_24, 0),
               _fx_catch_2);
            bool ktp_pass_by_ref_0 = v_24.ktp_pass_by_ref;
            if (ktp_pass_by_ref_0) {
               if (FX_REC_VARIANT_TAG(ctyp_0) == 19) {
                  _fx_N14C_form__ctyp_t v_25 = 0;
                  _fx_LN19C_form__carg_attr_t v_26 = 0;
                  FX_CALL(_fx_M6C_formFM8make_ptrN14C_form__ctyp_t1N14C_form__ctyp_t(ctyp_0, &v_25, 0), _fx_catch_0);
                  FX_CALL(_fx_cons_LN19C_form__carg_attr_t(&_fx_g27C_gen_fdecls__CArgPassByPtr, 0, true, &v_26), _fx_catch_0);
                  _fx_make_T2N14C_form__ctyp_tLN19C_form__carg_attr_t(v_25, v_26, &v_22);

               _fx_catch_0: ;
                  FX_FREE_LIST_SIMPLE(&v_26);
                  if (v_25) {
                     _fx_free_N14C_form__ctyp_t(&v_25);
                  }
               }
               else {
                  _fx_N14C_form__ctyp_t v_27 = 0;
                  _fx_LN19C_form__carg_attr_t v_28 = 0;
                  FX_CALL(_fx_M6C_formFM14make_const_ptrN14C_form__ctyp_t1N14C_form__ctyp_t(ctyp_0, &v_27, 0), _fx_catch_1);
                  FX_CALL(_fx_cons_LN19C_form__carg_attr_t(&_fx_g27C_gen_fdecls__CArgPassByPtr, 0, true, &v_28), _fx_catch_1);
                  _fx_make_T2N14C_form__ctyp_tLN19C_form__carg_attr_t(v_27, v_28, &v_22);

               _fx_catch_1: ;
                  FX_FREE_LIST_SIMPLE(&v_28);
                  if (v_27) {
                     _fx_free_N14C_form__ctyp_t(&v_27);
                  }
               }
               FX_CHECK_EXN(_fx_catch_2);
            }
            else {
               _fx_make_T2N14C_form__ctyp_tLN19C_form__carg_attr_t(ctyp_0, 0, &v_22);
            }
            FX_COPY_PTR(v_22.t0, &ctyp_1);
            FX_COPY_PTR(v_22.t1, &arg_flags_0);
            FX_CALL(
               _fx_M6C_formFM10add_cf_argv4R9Ast__id_tN14C_form__ctyp_tSR10Ast__loc_t(&arg_1, ctyp_1, &cname_0, &kf_loc_0, 0),
               _fx_catch_2);
            _fx_make_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&arg_1, ctyp_1, arg_flags_0, &v_23);
            FX_CALL(_fx_cons_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_23, args_3, false, &args_3),
               _fx_catch_2);
            _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&__fold_result___0);
            FX_COPY_PTR(args_3, &__fold_result___0);

         _fx_catch_2: ;
            _fx_free_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_23);
            FX_FREE_LIST_SIMPLE(&arg_flags_0);
            if (ctyp_1) {
               _fx_free_N14C_form__ctyp_t(&ctyp_1);
            }
            _fx_free_T2N14C_form__ctyp_tLN19C_form__carg_attr_t(&v_22);
            if (ctyp_0) {
               _fx_free_N14C_form__ctyp_t(&ctyp_0);
            }
            FX_FREE_STR(&v_21);
            FX_FREE_STR(&cname_0);
            if (t_0) {
               _fx_free_N14K_form__ktyp_t(&t_0);
            }
            _fx_free_R17K_form__kdefval_t(&v_20);
            if (args_3) {
               _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&args_3);
            }
            FX_CHECK_EXN(_fx_catch_3);
         }
         FX_COPY_PTR(__fold_result___0, &args_0);
         _fx_R17K_form__ktprops_t v_29;
         FX_CALL(_fx_M10K_annotateFM11get_ktpropsR17K_form__ktprops_t2N14K_form__ktyp_tR10Ast__loc_t(rt_0, &kf_loc_0, &v_29, 0),
            _fx_catch_3);
         bool rt_scalar_0 = v_29.ktp_scalar;
         FX_CALL(_fx_M11C_gen_typesFM9ktyp2ctypN14C_form__ctyp_t2N14K_form__ktyp_tR10Ast__loc_t(rt_0, &kf_loc_0, &crt_0, 0),
            _fx_catch_3);
         bool is_nothrow_0 = kf_flags_0.fun_flag_nothrow;
         bool t_1;
         if (is_nothrow_0) {
            t_1 = rt_scalar_0;
         }
         else {
            t_1 = false;
         }
         if (t_1) {
            _fx_make_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(crt_0, args_0, &v_7);
         }
         else if (FX_REC_VARIANT_TAG(crt_0) == 8) {
            _fx_make_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(_fx_g22C_gen_fdecls__CTypCInt,
               args_0, &v_7);
         }
         else {
            _fx_R9Ast__id_t v_30;
            fx_str_t slit_2 = FX_MAKE_STR("fx_result");
            FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &slit_2, &v_30, 0), _fx_catch_3);
            FX_CALL(_fx_M6C_formFM8make_ptrN14C_form__ctyp_t1N14C_form__ctyp_t(crt_0, &crt_1, 0), _fx_catch_3);
            fx_str_t slit_3 = FX_MAKE_STR("fx_result");
            FX_CALL(_fx_M6C_formFM10add_cf_argv4R9Ast__id_tN14C_form__ctyp_tSR10Ast__loc_t(&v_30, crt_1, &slit_3, &kf_loc_0, 0),
               _fx_catch_3);
            if (is_nothrow_0) {
               FX_COPY_PTR(_fx_g22C_gen_fdecls__CTypVoid, &v_8);
            }
            else {
               FX_COPY_PTR(_fx_g22C_gen_fdecls__CTypCInt, &v_8);
            }
            FX_CALL(_fx_cons_LN19C_form__carg_attr_t(&_fx_g24C_gen_fdecls__CArgRetVal, 0, true, &v_9), _fx_catch_3);
            FX_CALL(_fx_cons_LN19C_form__carg_attr_t(&_fx_g27C_gen_fdecls__CArgPassByPtr, v_9, false, &v_9), _fx_catch_3);
            _fx_make_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_30, crt_1, v_9, &v_10);
            FX_CALL(_fx_cons_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_10, args_0, true, &v_11), _fx_catch_3);
            _fx_make_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(v_8, v_11, &v_7);
         }
         FX_COPY_PTR(v_7.t0, &new_crt_0);
         FX_COPY_PTR(v_7.t1, &args_1);
         if (ctor_0.tag != 1) {
            FX_COPY_PTR(args_1, &args_2);
         }
         else {
            _fx_R9Ast__id_t fv_arg_0;
            fx_str_t slit_4 = FX_MAKE_STR("fx_fv");
            FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &slit_4, &fv_arg_0, 0), _fx_catch_3);
            fx_str_t slit_5 = FX_MAKE_STR("fx_fv");
            FX_CALL(
               _fx_M6C_formFM10add_cf_argv4R9Ast__id_tN14C_form__ctyp_tSR10Ast__loc_t(&fv_arg_0, _fx_g23C_form__std_CTypVoidPtr,
                  &slit_5, &kf_loc_0, 0), _fx_catch_3);
            FX_CALL(_fx_cons_LN19C_form__carg_attr_t(&_fx_g20C_gen_fdecls__CArgFV, 0, true, &v_12), _fx_catch_3);
            _fx_make_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&fv_arg_0, _fx_g23C_form__std_CTypVoidPtr, v_12,
               &v_13);
            FX_CALL(_fx_cons_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_13, args_1, true, &args_2), _fx_catch_3);
         }
         FX_CALL(
            _fx_M12C_gen_fdeclsFM3revLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t1LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(
               args_2, &v_14, 0), _fx_catch_3);
         bool res_0;
         FX_CALL(_fx_M3AstFM6__eq__B2RM4id_tRM4id_t(&kci_arg_0, &_fx_g9Ast__noid, &res_0, 0), _fx_catch_3);
         _fx_R16Ast__fun_flags_t v_31;
         if (res_0) {
            v_31 = kf_flags_0;
         }
         else {
            _fx_R16Ast__fun_flags_t rec_0 =
               { kf_flags_0.fun_flag_pure, kf_flags_0.fun_flag_ccode, kf_flags_0.fun_flag_have_keywords,
                  kf_flags_0.fun_flag_inline, kf_flags_0.fun_flag_nothrow, kf_flags_0.fun_flag_really_nothrow,
                  kf_flags_0.fun_flag_private, kf_flags_0.fun_flag_ctor, kf_flags_0.fun_flag_method_of, true,
                  kf_flags_0.fun_flag_recursive, kf_flags_0.fun_flag_instance };
            v_31 = rec_0;
         }
         _fx_make_R17C_form__cdeffun_t(&kf_name_0, &kf_cname_0, v_14, new_crt_0, 0, &v_31, kf_scope_0, &kf_loc_0, &v_15);
         FX_CALL(_fx_make_rR17C_form__cdeffun_t(&v_15, &cf_0), _fx_catch_3);
         _fx_M6C_formFM4CFunN15C_form__cinfo_t1rRM9cdeffun_t(cf_0, &v_16);
         FX_CALL(_fx_M6C_formFM13set_idc_entryv2R9Ast__id_tN15C_form__cinfo_t(&kf_name_0, &v_16, 0), _fx_catch_3);
         FX_CALL(_fx_M6C_formFM7CDefFunN15C_form__cstmt_t1rRM9cdeffun_t(cf_0, &v_17), _fx_catch_3);
         FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_17, top_func_decls_0, true, &v_18), _fx_catch_3);
         _fx_free_LN15C_form__cstmt_t(&top_func_decls_0);
         FX_COPY_PTR(v_18, &top_func_decls_0);

      _fx_catch_3: ;
         if (v_18) {
            _fx_free_LN15C_form__cstmt_t(&v_18);
         }
         if (v_17) {
            _fx_free_N15C_form__cstmt_t(&v_17);
         }
         _fx_free_N15C_form__cinfo_t(&v_16);
         if (cf_0) {
            _fx_free_rR17C_form__cdeffun_t(&cf_0);
         }
         _fx_free_R17C_form__cdeffun_t(&v_15);
         if (v_14) {
            _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_14);
         }
         _fx_free_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_13);
         FX_FREE_LIST_SIMPLE(&v_12);
         if (args_2) {
            _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&args_2);
         }
         if (args_1) {
            _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&args_1);
         }
         if (new_crt_0) {
            _fx_free_N14C_form__ctyp_t(&new_crt_0);
         }
         if (v_11) {
            _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_11);
         }
         _fx_free_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_10);
         FX_FREE_LIST_SIMPLE(&v_9);
         if (v_8) {
            _fx_free_N14C_form__ctyp_t(&v_8);
         }
         if (crt_1) {
            _fx_free_N14C_form__ctyp_t(&crt_1);
         }
         _fx_free_T2N14C_form__ctyp_tLT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_7);
         if (crt_0) {
            _fx_free_N14C_form__ctyp_t(&crt_0);
         }
         if (args_0) {
            _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&args_0);
         }
         if (__fold_result___0) {
            _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&__fold_result___0);
         }
         FX_FREE_STR(&kf_cname_0);
         FX_FREE_LIST_SIMPLE(&kf_params_0);
         if (rt_0) {
            _fx_free_N14K_form__ktyp_t(&rt_0);
         }
         if (kf_body_0) {
            _fx_free_N14K_form__kexp_t(&kf_body_0);
         }
         FX_FREE_LIST_SIMPLE(&kf_scope_0);
         goto _fx_endmatch_0;
      }
      if (tag_0 == 37) {
         _fx_LT2R9Ast__id_tN14K_form__ktyp_t kcv_freevars_0 = 0;
         fx_str_t kcv_cname_0 = {0};
         _fx_N14C_form__ctyp_t v_32 = 0;
         _fx_N14C_form__ctyp_t fcv_typ_0 = 0;
         _fx_N14C_form__cexp_t dst_exp_0 = 0;
         _fx_T2R9Ast__id_tN14C_form__ctyp_t v_33 = {0};
         _fx_T2R9Ast__id_tN14C_form__ctyp_t v_34 = {0};
         _fx_LT2R9Ast__id_tN14C_form__ctyp_t v_35 = 0;
         _fx_LT2R9Ast__id_tN14C_form__ctyp_t relems_0 = 0;
         _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t __fold_result___1 = {0};
         _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t v_36 = {0};
         _fx_LT2R9Ast__id_tN14C_form__ctyp_t relems_1 = 0;
         _fx_LN15C_form__cstmt_t free_ccode_0 = 0;
         _fx_T2R9Ast__id_tLN15C_form__cstmt_t v_37 = {0};
         _fx_LN14C_form__cexp_t v_38 = 0;
         _fx_N14C_form__cexp_t call_free_0 = 0;
         _fx_N15C_form__cstmt_t v_39 = 0;
         _fx_LN15C_form__cstmt_t freecode_0 = 0;
         fx_str_t v_40 = {0};
         fx_str_t v_41 = {0};
         fx_str_t free_f_cname_0 = {0};
         _fx_LN19C_form__carg_attr_t v_42 = 0;
         _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_43 = {0};
         _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_44 = 0;
         _fx_LN15C_form__cstmt_t v_45 = 0;
         _fx_R17C_form__cdeffun_t v_46 = {0};
         _fx_rR17C_form__cdeffun_t cf_1 = 0;
         _fx_N15C_form__cinfo_t v_47 = {0};
         _fx_N15C_form__cstmt_t v_48 = 0;
         _fx_LN15C_form__cstmt_t v_49 = 0;
         _fx_LN15C_form__cstmt_t decl_free_f_0 = 0;
         _fx_LT2R9Ast__id_tN14C_form__ctyp_t v_50 = 0;
         _fx_N14C_form__ctyp_t v_51 = 0;
         _fx_R17C_form__ctprops_t v_52 = {0};
         _fx_R17C_form__cdeftyp_t v_53 = {0};
         _fx_rR17C_form__cdeftyp_t ct_0 = 0;
         _fx_N15C_form__cinfo_t v_54 = {0};
         _fx_N15C_form__cstmt_t v_55 = 0;
         _fx_LN15C_form__cstmt_t v_56 = 0;
         _fx_LN15C_form__cstmt_t v_57 = 0;
         _fx_R25K_form__kdefclosurevars_t* v_58 = &e_0->u.KDefClosureVars->data;
         _fx_R10Ast__loc_t kcv_loc_0 = v_58->kcv_loc;
         FX_COPY_PTR(v_58->kcv_freevars, &kcv_freevars_0);
         fx_copy_str(&v_58->kcv_cname, &kcv_cname_0);
         _fx_R9Ast__id_t kcv_name_0 = v_58->kcv_name;
         FX_CALL(_fx_M6C_formFM8CTypNameN14C_form__ctyp_t1R9Ast__id_t(&kcv_name_0, &v_32), _fx_catch_5);
         FX_CALL(_fx_M6C_formFM8make_ptrN14C_form__ctyp_t1N14C_form__ctyp_t(v_32, &fcv_typ_0, 0), _fx_catch_5);
         _fx_R9Ast__id_t dst_id_0;
         fx_str_t slit_6 = FX_MAKE_STR("dst");
         FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_6, &dst_id_0, 0), _fx_catch_5);
         FX_CALL(
            _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(&dst_id_0, fcv_typ_0,
               &kcv_loc_0, &dst_exp_0, 0), _fx_catch_5);
         _fx_R9Ast__id_t v_59;
         fx_str_t slit_7 = FX_MAKE_STR("free_f");
         FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_7, &v_59, 0), _fx_catch_5);
         _fx_make_T2R9Ast__id_tN14C_form__ctyp_t(&v_59, _fx_g21C_form__std_fx_free_t, &v_33);
         _fx_R9Ast__id_t v_60;
         fx_str_t slit_8 = FX_MAKE_STR("rc");
         FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_8, &v_60, 0), _fx_catch_5);
         _fx_make_T2R9Ast__id_tN14C_form__ctyp_t(&v_60, _fx_g21C_gen_fdecls__CTypInt, &v_34);
         FX_CALL(_fx_cons_LT2R9Ast__id_tN14C_form__ctyp_t(&v_34, 0, true, &v_35), _fx_catch_5);
         FX_CALL(_fx_cons_LT2R9Ast__id_tN14C_form__ctyp_t(&v_33, v_35, true, &relems_0), _fx_catch_5);
         _fx_make_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(relems_0, 0, &__fold_result___1);
         int_ idx_1 = 0;
         _fx_LT2R9Ast__id_tN14K_form__ktyp_t lst_2 = kcv_freevars_0;
         for (; lst_2; lst_2 = lst_2->tl, idx_1 += 1) {
            _fx_N14K_form__ktyp_t kt_0 = 0;
            _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t v_61 = {0};
            _fx_LT2R9Ast__id_tN14C_form__ctyp_t relems_2 = 0;
            _fx_LN15C_form__cstmt_t free_ccode_1 = 0;
            _fx_N14C_form__ctyp_t ctyp_2 = 0;
            fx_str_t v_62 = {0};
            fx_str_t v_63 = {0};
            _fx_N14C_form__cexp_t elem_exp_0 = 0;
            _fx_LN15C_form__cstmt_t free_ccode_2 = 0;
            _fx_T2R9Ast__id_tN14C_form__ctyp_t v_64 = {0};
            _fx_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t v_65 = {0};
            _fx_T2R9Ast__id_tN14K_form__ktyp_t* __pat___0 = &lst_2->hd;
            FX_COPY_PTR(__pat___0->t1, &kt_0);
            _fx_copy_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(&__fold_result___1, &v_61);
            FX_COPY_PTR(v_61.t0, &relems_2);
            FX_COPY_PTR(v_61.t1, &free_ccode_1);
            FX_CALL(
               _fx_M11C_gen_typesFM9ktyp2ctypN14C_form__ctyp_t2N14K_form__ktyp_tR10Ast__loc_t(kt_0, &kcv_loc_0, &ctyp_2, 0),
               _fx_catch_4);
            FX_CALL(_fx_F6stringS1i(idx_1, &v_62, 0), _fx_catch_4);
            fx_str_t slit_9 = FX_MAKE_STR("t");
            {
               const fx_str_t strs_1[] = { slit_9, v_62 };
               FX_CALL(fx_strjoin(0, 0, 0, strs_1, 2, &v_63), _fx_catch_4);
            }
            _fx_R9Ast__id_t c_id_0;
            FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&v_63, &c_id_0, 0), _fx_catch_4);
            FX_CALL(
               _fx_M6C_formFM10cexp_arrowN14C_form__cexp_t3N14C_form__cexp_tR9Ast__id_tN14C_form__ctyp_t(dst_exp_0, &c_id_0,
                  ctyp_2, &elem_exp_0, 0), _fx_catch_4);
            FX_CALL(
               _fx_M11C_gen_typesFM13gen_free_codeLN15C_form__cstmt_t6N14C_form__cexp_tN14C_form__ctyp_tBBLN15C_form__cstmt_tR10Ast__loc_t(
                  elem_exp_0, ctyp_2, true, false, free_ccode_1, &kcv_loc_0, &free_ccode_2, 0), _fx_catch_4);
            _fx_make_T2R9Ast__id_tN14C_form__ctyp_t(&c_id_0, ctyp_2, &v_64);
            FX_CALL(_fx_cons_LT2R9Ast__id_tN14C_form__ctyp_t(&v_64, relems_2, false, &relems_2), _fx_catch_4);
            _fx_make_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(relems_2, free_ccode_2, &v_65);
            _fx_free_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(&__fold_result___1);
            _fx_copy_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(&v_65, &__fold_result___1);

         _fx_catch_4: ;
            _fx_free_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(&v_65);
            _fx_free_T2R9Ast__id_tN14C_form__ctyp_t(&v_64);
            if (free_ccode_2) {
               _fx_free_LN15C_form__cstmt_t(&free_ccode_2);
            }
            if (elem_exp_0) {
               _fx_free_N14C_form__cexp_t(&elem_exp_0);
            }
            FX_FREE_STR(&v_63);
            FX_FREE_STR(&v_62);
            if (ctyp_2) {
               _fx_free_N14C_form__ctyp_t(&ctyp_2);
            }
            if (free_ccode_1) {
               _fx_free_LN15C_form__cstmt_t(&free_ccode_1);
            }
            if (relems_2) {
               _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&relems_2);
            }
            _fx_free_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(&v_61);
            if (kt_0) {
               _fx_free_N14K_form__ktyp_t(&kt_0);
            }
            FX_CHECK_EXN(_fx_catch_5);
         }
         _fx_copy_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(&__fold_result___1, &v_36);
         FX_COPY_PTR(v_36.t0, &relems_1);
         FX_COPY_PTR(v_36.t1, &free_ccode_0);
         if (free_ccode_0 == 0) {
            _fx_make_T2R9Ast__id_tLN15C_form__cstmt_t(&_fx_g19C_form__std_fx_free, 0, &v_37);
         }
         else {
            FX_CALL(_fx_cons_LN14C_form__cexp_t(dst_exp_0, 0, true, &v_38), _fx_catch_5);
            FX_CALL(
               _fx_M6C_formFM9make_callN14C_form__cexp_t4R9Ast__id_tLN14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
                  &_fx_g19C_form__std_fx_free, v_38, _fx_g22C_gen_fdecls__CTypVoid, &kcv_loc_0, &call_free_0, 0), _fx_catch_5);
            FX_CALL(_fx_M6C_formFM4CExpN15C_form__cstmt_t1N14C_form__cexp_t(call_free_0, &v_39), _fx_catch_5);
            FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_39, free_ccode_0, true, &freecode_0), _fx_catch_5);
            _fx_R9Ast__id_t free_f_0;
            fx_str_t slit_10 = FX_MAKE_STR("free_cv");
            FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &slit_10, &free_f_0, 0), _fx_catch_5);
            fx_str_t slit_11 = FX_MAKE_STR("_cldata_t");
            int_ res_1;
            FX_CALL(_fx_M12C_gen_fdeclsFM6lengthi1S(&slit_11, &res_1, 0), _fx_catch_5);
            FX_CALL(fx_substr(&kcv_cname_0, 0, FX_STR_LENGTH(kcv_cname_0) - res_1, 1, 0, &v_40), _fx_catch_5);
            FX_CALL(_fx_M8K_mangleFM9remove_fxS1S(&v_40, &v_41, 0), _fx_catch_5);
            fx_str_t slit_12 = FX_MAKE_STR("_fx_free_");
            {
               const fx_str_t strs_2[] = { slit_12, v_41 };
               FX_CALL(fx_strjoin(0, 0, 0, strs_2, 2, &free_f_cname_0), _fx_catch_5);
            }
            FX_CALL(_fx_cons_LN19C_form__carg_attr_t(&_fx_g27C_gen_fdecls__CArgPassByPtr, 0, true, &v_42), _fx_catch_5);
            _fx_make_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&dst_id_0, fcv_typ_0, v_42, &v_43);
            FX_CALL(_fx_cons_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_43, 0, true, &v_44), _fx_catch_5);
            FX_CALL(_fx_M12C_gen_fdeclsFM3revLN15C_form__cstmt_t1LN15C_form__cstmt_t(freecode_0, &v_45, 0), _fx_catch_5);
            _fx_R16Ast__fun_flags_t v_66;
            FX_CALL(_fx_M3AstFM17default_fun_flagsRM11fun_flags_t0(&v_66, 0), _fx_catch_5);
            _fx_R16Ast__fun_flags_t v_67 =
               { v_66.fun_flag_pure, v_66.fun_flag_ccode, v_66.fun_flag_have_keywords, v_66.fun_flag_inline, true,
                  v_66.fun_flag_really_nothrow, v_66.fun_flag_private, v_66.fun_flag_ctor, v_66.fun_flag_method_of,
                  v_66.fun_flag_uses_fv, v_66.fun_flag_recursive, v_66.fun_flag_instance };
            _fx_make_R17C_form__cdeffun_t(&free_f_0, &free_f_cname_0, v_44, _fx_g22C_gen_fdecls__CTypVoid, v_45, &v_67, 0,
               &kcv_loc_0, &v_46);
            FX_CALL(_fx_make_rR17C_form__cdeffun_t(&v_46, &cf_1), _fx_catch_5);
            _fx_M6C_formFM4CFunN15C_form__cinfo_t1rRM9cdeffun_t(cf_1, &v_47);
            FX_CALL(_fx_M6C_formFM13set_idc_entryv2R9Ast__id_tN15C_form__cinfo_t(&free_f_0, &v_47, 0), _fx_catch_5);
            FX_CALL(_fx_M6C_formFM7CDefFunN15C_form__cstmt_t1rRM9cdeffun_t(cf_1, &v_48), _fx_catch_5);
            FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_48, 0, true, &v_49), _fx_catch_5);
            _fx_make_T2R9Ast__id_tLN15C_form__cstmt_t(&free_f_0, v_49, &v_37);
         }
         _fx_R9Ast__id_t free_f_1 = v_37.t0;
         FX_COPY_PTR(v_37.t1, &decl_free_f_0);
         FX_CALL(_fx_M12C_gen_fdeclsFM3revLT2R9Ast__id_tN14C_form__ctyp_t1LT2R9Ast__id_tN14C_form__ctyp_t(relems_1, &v_50, 0),
            _fx_catch_5);
         FX_CALL(
            _fx_M6C_formFM10CTypStructN14C_form__ctyp_t2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t(
               &_fx_g20C_gen_fdecls__None1_, v_50, &v_51), _fx_catch_5);
         _fx_Ta2R9Ast__id_t v_68 = { _fx_g9Ast__noid, free_f_1 };
         _fx_Ta2R9Ast__id_t v_69 = { _fx_g9Ast__noid, _fx_g9Ast__noid };
         _fx_make_R17C_form__ctprops_t(false, true, false, true, 0, &v_68, &v_69, &v_52);
         _fx_make_R17C_form__cdeftyp_t(&kcv_name_0, v_51, &kcv_cname_0, &v_52, 2, &_fx_g9Ast__noid, 0, &_fx_g9Ast__noid, 0,
            &kcv_loc_0, &v_53);
         FX_CALL(_fx_make_rR17C_form__cdeftyp_t(&v_53, &ct_0), _fx_catch_5);
         _fx_M6C_formFM4CTypN15C_form__cinfo_t1rRM9cdeftyp_t(ct_0, &v_54);
         FX_CALL(_fx_M6C_formFM13set_idc_entryv2R9Ast__id_tN15C_form__cinfo_t(&kcv_name_0, &v_54, 0), _fx_catch_5);
         FX_CALL(_fx_M6C_formFM7CDefTypN15C_form__cstmt_t1rRM9cdeftyp_t(ct_0, &v_55), _fx_catch_5);
         FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_55, top_fcv_decls_0, true, &v_56), _fx_catch_5);
         FX_CALL(
            _fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(decl_free_f_0, v_56, &v_57,
               0), _fx_catch_5);
         _fx_free_LN15C_form__cstmt_t(&top_fcv_decls_0);
         FX_COPY_PTR(v_57, &top_fcv_decls_0);

      _fx_catch_5: ;
         if (v_57) {
            _fx_free_LN15C_form__cstmt_t(&v_57);
         }
         if (v_56) {
            _fx_free_LN15C_form__cstmt_t(&v_56);
         }
         if (v_55) {
            _fx_free_N15C_form__cstmt_t(&v_55);
         }
         _fx_free_N15C_form__cinfo_t(&v_54);
         if (ct_0) {
            _fx_free_rR17C_form__cdeftyp_t(&ct_0);
         }
         _fx_free_R17C_form__cdeftyp_t(&v_53);
         _fx_free_R17C_form__ctprops_t(&v_52);
         if (v_51) {
            _fx_free_N14C_form__ctyp_t(&v_51);
         }
         if (v_50) {
            _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&v_50);
         }
         if (decl_free_f_0) {
            _fx_free_LN15C_form__cstmt_t(&decl_free_f_0);
         }
         if (v_49) {
            _fx_free_LN15C_form__cstmt_t(&v_49);
         }
         if (v_48) {
            _fx_free_N15C_form__cstmt_t(&v_48);
         }
         _fx_free_N15C_form__cinfo_t(&v_47);
         if (cf_1) {
            _fx_free_rR17C_form__cdeffun_t(&cf_1);
         }
         _fx_free_R17C_form__cdeffun_t(&v_46);
         if (v_45) {
            _fx_free_LN15C_form__cstmt_t(&v_45);
         }
         if (v_44) {
            _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_44);
         }
         _fx_free_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_43);
         FX_FREE_LIST_SIMPLE(&v_42);
         FX_FREE_STR(&free_f_cname_0);
         FX_FREE_STR(&v_41);
         FX_FREE_STR(&v_40);
         if (freecode_0) {
            _fx_free_LN15C_form__cstmt_t(&freecode_0);
         }
         if (v_39) {
            _fx_free_N15C_form__cstmt_t(&v_39);
         }
         if (call_free_0) {
            _fx_free_N14C_form__cexp_t(&call_free_0);
         }
         if (v_38) {
            _fx_free_LN14C_form__cexp_t(&v_38);
         }
         _fx_free_T2R9Ast__id_tLN15C_form__cstmt_t(&v_37);
         if (free_ccode_0) {
            _fx_free_LN15C_form__cstmt_t(&free_ccode_0);
         }
         if (relems_1) {
            _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&relems_1);
         }
         _fx_free_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(&v_36);
         _fx_free_T2LT2R9Ast__id_tN14C_form__ctyp_tLN15C_form__cstmt_t(&__fold_result___1);
         if (relems_0) {
            _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&relems_0);
         }
         if (v_35) {
            _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&v_35);
         }
         _fx_free_T2R9Ast__id_tN14C_form__ctyp_t(&v_34);
         _fx_free_T2R9Ast__id_tN14C_form__ctyp_t(&v_33);
         if (dst_exp_0) {
            _fx_free_N14C_form__cexp_t(&dst_exp_0);
         }
         if (fcv_typ_0) {
            _fx_free_N14C_form__ctyp_t(&fcv_typ_0);
         }
         if (v_32) {
            _fx_free_N14C_form__ctyp_t(&v_32);
         }
         FX_FREE_STR(&kcv_cname_0);
         if (kcv_freevars_0) {
            _fx_free_LT2R9Ast__id_tN14K_form__ktyp_t(&kcv_freevars_0);
         }
         goto _fx_endmatch_0;
      }
      if (tag_0 == 33) {
         _fx_copy_R17K_form__kdefexn_t(&e_0->u.KDefExn->data, &v_5);
         if (v_5.ke_std == true) {
            if (FX_REC_VARIANT_TAG(v_5.ke_typ) == 7) {
               _fx_R17K_form__kdefval_t v_70 = {0};
               fx_str_t kv_cname_0 = {0};
               _fx_R16Ast__val_flags_t v_71 = {0};
               _fx_R16Ast__val_flags_t cv_flags_0 = {0};
               _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t res_2 = {0};
               _fx_R16Ast__val_flags_t v_72 = {0};
               _fx_R16Ast__val_flags_t cv_flags_1 = {0};
               _fx_N14C_form__cexp_t v_73 = 0;
               _fx_Nt6option1N14C_form__cexp_t v_74 = {0};
               _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t v_75 = {0};
               _fx_N14C_form__cexp_t exn_exp_0 = 0;
               _fx_LN15C_form__cstmt_t decls_0 = 0;
               _fx_N14C_form__cexp_t v_76 = 0;
               _fx_LN14C_form__cexp_t v_77 = 0;
               _fx_N14C_form__cexp_t v_78 = 0;
               _fx_N15C_form__cstmt_t call_reg_exn_0 = 0;
               _fx_LN15C_form__cstmt_t v_79 = 0;
               _fx_LN15C_form__cstmt_t v_80 = 0;
               _fx_R10Ast__loc_t* ke_loc_0 = &v_5.ke_loc;
               _fx_LN12Ast__scope_t ke_scope_0 = v_5.ke_scope;
               _fx_R9Ast__id_t* ke_tag_0 = &v_5.ke_tag;
               FX_CALL(_fx_M6K_formFM8get_kvalRM9kdefval_t2R9Ast__id_tR10Ast__loc_t(ke_tag_0, ke_loc_0, &v_70, 0), _fx_catch_6);
               fx_copy_str(&v_70.kv_cname, &kv_cname_0);
               FX_CALL(_fx_M3AstFM17default_val_flagsRM11val_flags_t0(&v_71, 0), _fx_catch_6);
               _fx_make_R16Ast__val_flags_t(v_71.val_flag_arg, true, v_71.val_flag_temp, v_71.val_flag_tempref,
                  v_71.val_flag_private, v_71.val_flag_subarray, v_71.val_flag_instance, &v_71.val_flag_method,
                  v_71.val_flag_ctor, ke_scope_0, &cv_flags_0);
               FX_CALL(
                  _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
                     ke_tag_0, _fx_g22C_gen_fdecls__CTypCInt, &cv_flags_0, &kv_cname_0, &_fx_g18C_gen_fdecls__None, 0, ke_loc_0,
                     &res_2, 0), _fx_catch_6);
               FX_CALL(_fx_M3AstFM17default_val_flagsRM11val_flags_t0(&v_72, 0), _fx_catch_6);
               _fx_make_R16Ast__val_flags_t(v_72.val_flag_arg, true, v_72.val_flag_temp, v_72.val_flag_tempref,
                  v_72.val_flag_private, v_72.val_flag_subarray, v_72.val_flag_instance, &v_72.val_flag_method,
                  v_72.val_flag_ctor, ke_scope_0, &cv_flags_1);
               FX_CALL(_fx_M6C_formFM14make_dummy_expN14C_form__cexp_t1R10Ast__loc_t(ke_loc_0, &v_73, 0), _fx_catch_6);
               _fx_M12C_gen_fdeclsFM4SomeNt6option1N14C_form__cexp_t1N14C_form__cexp_t(v_73, &v_74);
               FX_CALL(
                  _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
                     &v_5.ke_name, _fx_g21C_gen_fdecls__CTypExn, &cv_flags_1, &v_5.ke_cname, &v_74, 0, ke_loc_0, &v_75, 0),
                  _fx_catch_6);
               FX_COPY_PTR(v_75.t0, &exn_exp_0);
               FX_COPY_PTR(v_75.t1, &decls_0);
               _fx_R9Ast__id_t v_81;
               FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&kv_cname_0, &v_81, 0), _fx_catch_6);
               FX_CALL(
                  _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(&v_81,
                     _fx_g22C_gen_fdecls__CTypCInt, ke_loc_0, &v_76, 0), _fx_catch_6);
               FX_CALL(_fx_cons_LN14C_form__cexp_t(exn_exp_0, 0, true, &v_77), _fx_catch_6);
               FX_CALL(_fx_cons_LN14C_form__cexp_t(v_76, v_77, false, &v_77), _fx_catch_6);
               FX_CALL(
                  _fx_M6C_formFM9make_callN14C_form__cexp_t4R9Ast__id_tLN14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
                     &_fx_g33C_form__std_FX_REG_SIMPLE_STD_EXN, v_77, _fx_g22C_gen_fdecls__CTypVoid, ke_loc_0, &v_78, 0),
                  _fx_catch_6);
               FX_CALL(_fx_M6C_formFM4CExpN15C_form__cstmt_t1N14C_form__cexp_t(v_78, &call_reg_exn_0), _fx_catch_6);
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(decls_0,
                     top_fcv_decls_0, &v_79, 0), _fx_catch_6);
               _fx_free_LN15C_form__cstmt_t(&top_fcv_decls_0);
               FX_COPY_PTR(v_79, &top_fcv_decls_0);
               FX_CALL(_fx_cons_LN15C_form__cstmt_t(call_reg_exn_0, mod_init_calls_0, true, &v_80), _fx_catch_6);
               _fx_free_LN15C_form__cstmt_t(&mod_init_calls_0);
               FX_COPY_PTR(v_80, &mod_init_calls_0);

            _fx_catch_6: ;
               if (v_80) {
                  _fx_free_LN15C_form__cstmt_t(&v_80);
               }
               if (v_79) {
                  _fx_free_LN15C_form__cstmt_t(&v_79);
               }
               if (call_reg_exn_0) {
                  _fx_free_N15C_form__cstmt_t(&call_reg_exn_0);
               }
               if (v_78) {
                  _fx_free_N14C_form__cexp_t(&v_78);
               }
               if (v_77) {
                  _fx_free_LN14C_form__cexp_t(&v_77);
               }
               if (v_76) {
                  _fx_free_N14C_form__cexp_t(&v_76);
               }
               if (decls_0) {
                  _fx_free_LN15C_form__cstmt_t(&decls_0);
               }
               if (exn_exp_0) {
                  _fx_free_N14C_form__cexp_t(&exn_exp_0);
               }
               _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(&v_75);
               _fx_free_Nt6option1N14C_form__cexp_t(&v_74);
               if (v_73) {
                  _fx_free_N14C_form__cexp_t(&v_73);
               }
               _fx_free_R16Ast__val_flags_t(&cv_flags_1);
               _fx_free_R16Ast__val_flags_t(&v_72);
               _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(&res_2);
               _fx_free_R16Ast__val_flags_t(&cv_flags_0);
               _fx_free_R16Ast__val_flags_t(&v_71);
               FX_FREE_STR(&kv_cname_0);
               _fx_free_R17K_form__kdefval_t(&v_70);
               goto _fx_endmatch_0;
            }
         }
      }
      if (tag_0 == 33) {
         _fx_LN12Ast__scope_t ke_scope_1 = 0;
         fx_str_t ke_base_cname_0 = {0};
         fx_str_t ke_cname_0 = {0};
         _fx_N14K_form__ktyp_t ke_typ_0 = 0;
         fx_str_t v_82 = {0};
         fx_str_t exn_strname_0 = {0};
         _fx_N14K_form__klit_t v_83 = {0};
         _fx_T2N14C_form__ctyp_tR10Ast__loc_t v_84 = {0};
         _fx_N14C_form__cexp_t exn_strname_1 = 0;
         fx_str_t v_85 = {0};
         fx_str_t v_86 = {0};
         fx_str_t v_87 = {0};
         fx_str_t info_cname_0 = {0};
         _fx_R16Ast__val_flags_t v_88 = {0};
         _fx_R16Ast__val_flags_t cv_flags_2 = {0};
         _fx_N14C_form__cexp_t v_89 = 0;
         _fx_Nt6option1N14C_form__cexp_t v_90 = {0};
         _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t v_91 = {0};
         _fx_N14C_form__cexp_t info_exp_0 = 0;
         _fx_LN15C_form__cstmt_t decls_1 = 0;
         _fx_N14C_form__cexp_t ke_tag_exp_0 = 0;
         _fx_Ta3LN15C_form__cstmt_t v_92 = {0};
         _fx_LN15C_form__cstmt_t reg_calls_0 = 0;
         _fx_LN15C_form__cstmt_t decls_2 = 0;
         _fx_LN15C_form__cstmt_t exn_data_decls_0 = 0;
         _fx_LN15C_form__cstmt_t v_93 = 0;
         _fx_LN15C_form__cstmt_t v_94 = 0;
         _fx_LN15C_form__cstmt_t v_95 = 0;
         _fx_R17K_form__kdefexn_t* v_96 = &e_0->u.KDefExn->data;
         _fx_R10Ast__loc_t ke_loc_1 = v_96->ke_loc;
         FX_COPY_PTR(v_96->ke_scope, &ke_scope_1);
         _fx_R9Ast__id_t ke_make_0 = v_96->ke_make;
         fx_copy_str(&v_96->ke_base_cname, &ke_base_cname_0);
         fx_copy_str(&v_96->ke_cname, &ke_cname_0);
         _fx_R9Ast__id_t ke_tag_1 = v_96->ke_tag;
         bool ke_std_0 = v_96->ke_std;
         FX_COPY_PTR(v_96->ke_typ, &ke_typ_0);
         _fx_R9Ast__id_t ke_name_0 = v_96->ke_name;
         FX_CALL(_fx_M3AstFM2ppS1RM4id_t(&ke_name_0, &v_82, 0), _fx_catch_9);
         FX_CALL(_fx_M3AstFM18get_qualified_nameS2SLN12Ast__scope_t(&v_82, ke_scope_1, &exn_strname_0, 0), _fx_catch_9);
         _fx_M6K_formFM10KLitStringN14K_form__klit_t1S(&exn_strname_0, &v_83);
         _fx_make_T2N14C_form__ctyp_tR10Ast__loc_t(_fx_g24C_gen_fdecls__CTypString, &ke_loc_1, &v_84);
         FX_CALL(
            _fx_M6C_formFM7CExpLitN14C_form__cexp_t2N14K_form__klit_tT2N14C_form__ctyp_tR10Ast__loc_t(&v_83, &v_84,
               &exn_strname_1), _fx_catch_9);
         FX_CALL(_fx_M3AstFM2ppS1RM4id_t(&ke_name_0, &v_85, 0), _fx_catch_9);
         fx_str_t slit_13 = FX_MAKE_STR("_info");
         {
            const fx_str_t strs_3[] = { v_85, slit_13 };
            FX_CALL(fx_strjoin(0, 0, 0, strs_3, 2, &v_86), _fx_catch_9);
         }
         _fx_R9Ast__id_t exn_info_0;
         FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &v_86, &exn_info_0, 0), _fx_catch_9);
         fx_str_t slit_14 = FX_MAKE_STR("_info");
         {
            const fx_str_t strs_4[] = { ke_base_cname_0, slit_14 };
            FX_CALL(fx_strjoin(0, 0, 0, strs_4, 2, &v_87), _fx_catch_9);
         }
         FX_CALL(_fx_M8K_mangleFM6add_fxS1S(&v_87, &info_cname_0, 0), _fx_catch_9);
         FX_CALL(_fx_M3AstFM17default_val_flagsRM11val_flags_t0(&v_88, 0), _fx_catch_9);
         _fx_make_R16Ast__val_flags_t(v_88.val_flag_arg, true, v_88.val_flag_temp, v_88.val_flag_tempref, v_88.val_flag_private,
            v_88.val_flag_subarray, v_88.val_flag_instance, &v_88.val_flag_method, v_88.val_flag_ctor, ke_scope_1, &cv_flags_2);
         FX_CALL(_fx_M6C_formFM14make_dummy_expN14C_form__cexp_t1R10Ast__loc_t(&ke_loc_1, &v_89, 0), _fx_catch_9);
         _fx_M12C_gen_fdeclsFM4SomeNt6option1N14C_form__cexp_t1N14C_form__cexp_t(v_89, &v_90);
         FX_CALL(
            _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
               &exn_info_0, _fx_g25C_form__std_fx_exn_info_t, &cv_flags_2, &info_cname_0, &v_90, 0, &ke_loc_1, &v_91, 0),
            _fx_catch_9);
         FX_COPY_PTR(v_91.t0, &info_exp_0);
         FX_COPY_PTR(v_91.t1, &decls_1);
         FX_CALL(
            _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(&ke_tag_1,
               _fx_g22C_gen_fdecls__CTypCInt, &ke_loc_1, &ke_tag_exp_0, 0), _fx_catch_9);
         if (FX_REC_VARIANT_TAG(ke_typ_0) == 7) {
            _fx_R16Ast__val_flags_t v_97 = {0};
            _fx_R16Ast__val_flags_t cv_flags_3 = {0};
            _fx_N14C_form__cexp_t v_98 = 0;
            _fx_Nt6option1N14C_form__cexp_t v_99 = {0};
            _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t v_100 = {0};
            _fx_N14C_form__cexp_t exn_exp_1 = 0;
            _fx_LN15C_form__cstmt_t decls_3 = 0;
            _fx_LN14C_form__cexp_t v_101 = 0;
            _fx_N14C_form__cexp_t call_reg_exn_1 = 0;
            _fx_N15C_form__cstmt_t v_102 = 0;
            _fx_LN15C_form__cstmt_t v_103 = 0;
            FX_CALL(_fx_M3AstFM17default_val_flagsRM11val_flags_t0(&v_97, 0), _fx_catch_7);
            _fx_make_R16Ast__val_flags_t(v_97.val_flag_arg, true, v_97.val_flag_temp, v_97.val_flag_tempref,
               v_97.val_flag_private, v_97.val_flag_subarray, v_97.val_flag_instance, &v_97.val_flag_method, v_97.val_flag_ctor,
               ke_scope_1, &cv_flags_3);
            FX_CALL(_fx_M6C_formFM14make_dummy_expN14C_form__cexp_t1R10Ast__loc_t(&ke_loc_1, &v_98, 0), _fx_catch_7);
            _fx_M12C_gen_fdeclsFM4SomeNt6option1N14C_form__cexp_t1N14C_form__cexp_t(v_98, &v_99);
            FX_CALL(
               _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
                  &ke_name_0, _fx_g21C_gen_fdecls__CTypExn, &cv_flags_3, &ke_cname_0, &v_99, decls_1, &ke_loc_1, &v_100, 0),
               _fx_catch_7);
            FX_COPY_PTR(v_100.t0, &exn_exp_1);
            FX_COPY_PTR(v_100.t1, &decls_3);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(exn_exp_1, 0, true, &v_101), _fx_catch_7);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(info_exp_0, v_101, false, &v_101), _fx_catch_7);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(ke_tag_exp_0, v_101, false, &v_101), _fx_catch_7);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(exn_strname_1, v_101, false, &v_101), _fx_catch_7);
            FX_CALL(
               _fx_M6C_formFM9make_callN14C_form__cexp_t4R9Ast__id_tLN14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
                  &_fx_g29C_form__std_FX_REG_SIMPLE_EXN, v_101, _fx_g22C_gen_fdecls__CTypVoid, &ke_loc_1, &call_reg_exn_1, 0),
               _fx_catch_7);
            FX_CALL(_fx_M6C_formFM4CExpN15C_form__cstmt_t1N14C_form__cexp_t(call_reg_exn_1, &v_102), _fx_catch_7);
            FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_102, 0, true, &v_103), _fx_catch_7);
            _fx_make_Ta3LN15C_form__cstmt_t(v_103, decls_3, 0, &v_92);

         _fx_catch_7: ;
            if (v_103) {
               _fx_free_LN15C_form__cstmt_t(&v_103);
            }
            if (v_102) {
               _fx_free_N15C_form__cstmt_t(&v_102);
            }
            if (call_reg_exn_1) {
               _fx_free_N14C_form__cexp_t(&call_reg_exn_1);
            }
            if (v_101) {
               _fx_free_LN14C_form__cexp_t(&v_101);
            }
            if (decls_3) {
               _fx_free_LN15C_form__cstmt_t(&decls_3);
            }
            if (exn_exp_1) {
               _fx_free_N14C_form__cexp_t(&exn_exp_1);
            }
            _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(&v_100);
            _fx_free_Nt6option1N14C_form__cexp_t(&v_99);
            if (v_98) {
               _fx_free_N14C_form__cexp_t(&v_98);
            }
            _fx_free_R16Ast__val_flags_t(&cv_flags_3);
            _fx_free_R16Ast__val_flags_t(&v_97);
         }
         else {
            fx_str_t v_104 = {0};
            fx_str_t v_105 = {0};
            fx_str_t v_106 = {0};
            fx_str_t exn_data_cname_0 = {0};
            _fx_N14C_form__ctyp_t v_107 = 0;
            _fx_N14C_form__ctyp_t exn_data_ptr_t_0 = 0;
            _fx_N14C_form__cexp_t dst_exp_1 = 0;
            _fx_N14C_form__ctyp_t ke_ctyp_0 = 0;
            _fx_N14C_form__cexp_t dst_data_exp_0 = 0;
            _fx_LN15C_form__cstmt_t free_ccode_3 = 0;
            _fx_T2R9Ast__id_tN14C_form__ctyp_t v_108 = {0};
            _fx_T2R9Ast__id_tN14C_form__ctyp_t v_109 = {0};
            _fx_LT2R9Ast__id_tN14C_form__ctyp_t v_110 = 0;
            _fx_LT2R9Ast__id_tN14C_form__ctyp_t relems_3 = 0;
            _fx_T2R9Ast__id_tLN15C_form__cstmt_t v_111 = {0};
            _fx_LN14C_form__cexp_t v_112 = 0;
            _fx_N14C_form__cexp_t call_free_1 = 0;
            _fx_N15C_form__cstmt_t v_113 = 0;
            _fx_LN15C_form__cstmt_t freecode_1 = 0;
            fx_str_t free_f_cname_1 = {0};
            _fx_LN19C_form__carg_attr_t v_114 = 0;
            _fx_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_115 = {0};
            _fx_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t v_116 = 0;
            _fx_LN15C_form__cstmt_t v_117 = 0;
            _fx_R17C_form__cdeffun_t v_118 = {0};
            _fx_rR17C_form__cdeffun_t cf_2 = 0;
            _fx_N15C_form__cinfo_t v_119 = {0};
            _fx_N15C_form__cstmt_t v_120 = 0;
            _fx_LN15C_form__cstmt_t v_121 = 0;
            _fx_LN15C_form__cstmt_t free_f_decl_0 = 0;
            _fx_N14C_form__ctyp_t v_122 = 0;
            _fx_R17C_form__ctprops_t v_123 = {0};
            _fx_R17C_form__cdeftyp_t v_124 = {0};
            _fx_rR17C_form__cdeftyp_t exn_data_ct_0 = 0;
            _fx_N14C_form__cexp_t free_f_exp_0 = 0;
            _fx_N14C_form__ctyp_t v_125 = 0;
            _fx_R17C_form__cdefexn_t v_126 = {0};
            _fx_rR17C_form__cdefexn_t cexn_0 = 0;
            _fx_N15C_form__cinfo_t v_127 = {0};
            _fx_N15C_form__cinfo_t v_128 = {0};
            _fx_LN14C_form__cexp_t v_129 = 0;
            _fx_N14C_form__cexp_t call_reg_exn_2 = 0;
            _fx_N15C_form__cstmt_t v_130 = 0;
            _fx_LN15C_form__cstmt_t v_131 = 0;
            _fx_N15C_form__cstmt_t v_132 = 0;
            _fx_LN15C_form__cstmt_t v_133 = 0;
            _fx_LN15C_form__cstmt_t v_134 = 0;
            _fx_N15C_form__cstmt_t v_135 = 0;
            _fx_LN15C_form__cstmt_t v_136 = 0;
            FX_CALL(_fx_M3AstFM2ppS1RM4id_t(&ke_name_0, &v_104, 0), _fx_catch_8);
            fx_str_t slit_15 = FX_MAKE_STR("_data_t");
            {
               const fx_str_t strs_5[] = { v_104, slit_15 };
               FX_CALL(fx_strjoin(0, 0, 0, strs_5, 2, &v_105), _fx_catch_8);
            }
            _fx_R9Ast__id_t exn_data_id_0;
            FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &v_105, &exn_data_id_0, 0), _fx_catch_8);
            fx_str_t slit_16 = FX_MAKE_STR("_data_t");
            {
               const fx_str_t strs_6[] = { ke_base_cname_0, slit_16 };
               FX_CALL(fx_strjoin(0, 0, 0, strs_6, 2, &v_106), _fx_catch_8);
            }
            FX_CALL(_fx_M8K_mangleFM6add_fxS1S(&v_106, &exn_data_cname_0, 0), _fx_catch_8);
            FX_CALL(_fx_M6C_formFM8CTypNameN14C_form__ctyp_t1R9Ast__id_t(&exn_data_id_0, &v_107), _fx_catch_8);
            FX_CALL(_fx_M6C_formFM8make_ptrN14C_form__ctyp_t1N14C_form__ctyp_t(v_107, &exn_data_ptr_t_0, 0), _fx_catch_8);
            _fx_R9Ast__id_t dst_id_1;
            fx_str_t slit_17 = FX_MAKE_STR("dst");
            FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_17, &dst_id_1, 0), _fx_catch_8);
            FX_CALL(
               _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(&dst_id_1,
                  exn_data_ptr_t_0, &ke_loc_1, &dst_exp_1, 0), _fx_catch_8);
            FX_CALL(
               _fx_M11C_gen_typesFM9ktyp2ctypN14C_form__ctyp_t2N14K_form__ktyp_tR10Ast__loc_t(ke_typ_0, &ke_loc_1, &ke_ctyp_0,
                  0), _fx_catch_8);
            _fx_R9Ast__id_t v_137;
            fx_str_t slit_18 = FX_MAKE_STR("data");
            FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_18, &v_137, 0), _fx_catch_8);
            FX_CALL(
               _fx_M6C_formFM10cexp_arrowN14C_form__cexp_t3N14C_form__cexp_tR9Ast__id_tN14C_form__ctyp_t(dst_exp_1, &v_137,
                  ke_ctyp_0, &dst_data_exp_0, 0), _fx_catch_8);
            FX_CALL(
               _fx_M11C_gen_typesFM13gen_free_codeLN15C_form__cstmt_t6N14C_form__cexp_tN14C_form__ctyp_tBBLN15C_form__cstmt_tR10Ast__loc_t(
                  dst_data_exp_0, ke_ctyp_0, true, false, 0, &ke_loc_1, &free_ccode_3, 0), _fx_catch_8);
            _fx_R9Ast__id_t v_138;
            fx_str_t slit_19 = FX_MAKE_STR("rc");
            FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_19, &v_138, 0), _fx_catch_8);
            _fx_make_T2R9Ast__id_tN14C_form__ctyp_t(&v_138, _fx_g21C_gen_fdecls__CTypInt, &v_108);
            _fx_R9Ast__id_t v_139;
            fx_str_t slit_20 = FX_MAKE_STR("data");
            FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_20, &v_139, 0), _fx_catch_8);
            _fx_make_T2R9Ast__id_tN14C_form__ctyp_t(&v_139, ke_ctyp_0, &v_109);
            FX_CALL(_fx_cons_LT2R9Ast__id_tN14C_form__ctyp_t(&v_109, 0, true, &v_110), _fx_catch_8);
            FX_CALL(_fx_cons_LT2R9Ast__id_tN14C_form__ctyp_t(&v_108, v_110, true, &relems_3), _fx_catch_8);
            if (free_ccode_3 == 0) {
               _fx_make_T2R9Ast__id_tLN15C_form__cstmt_t(&_fx_g19C_form__std_fx_free, 0, &v_111);
            }
            else {
               FX_CALL(_fx_cons_LN14C_form__cexp_t(dst_exp_1, 0, true, &v_112), _fx_catch_8);
               FX_CALL(
                  _fx_M6C_formFM9make_callN14C_form__cexp_t4R9Ast__id_tLN14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
                     &_fx_g19C_form__std_fx_free, v_112, _fx_g22C_gen_fdecls__CTypVoid, &ke_loc_1, &call_free_1, 0),
                  _fx_catch_8);
               FX_CALL(_fx_M6C_formFM4CExpN15C_form__cstmt_t1N14C_form__cexp_t(call_free_1, &v_113), _fx_catch_8);
               FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_113, free_ccode_3, true, &freecode_1), _fx_catch_8);
               _fx_R9Ast__id_t free_f_2;
               fx_str_t slit_21 = FX_MAKE_STR("free_exn");
               FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &slit_21, &free_f_2, 0), _fx_catch_8);
               fx_str_t slit_22 = FX_MAKE_STR("_fx_free_");
               {
                  const fx_str_t strs_7[] = { slit_22, ke_base_cname_0 };
                  FX_CALL(fx_strjoin(0, 0, 0, strs_7, 2, &free_f_cname_1), _fx_catch_8);
               }
               FX_CALL(_fx_cons_LN19C_form__carg_attr_t(&_fx_g27C_gen_fdecls__CArgPassByPtr, 0, true, &v_114), _fx_catch_8);
               _fx_make_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&dst_id_1, exn_data_ptr_t_0, v_114, &v_115);
               FX_CALL(_fx_cons_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_115, 0, true, &v_116), _fx_catch_8);
               FX_CALL(_fx_M12C_gen_fdeclsFM3revLN15C_form__cstmt_t1LN15C_form__cstmt_t(freecode_1, &v_117, 0), _fx_catch_8);
               _fx_R16Ast__fun_flags_t v_140;
               FX_CALL(_fx_M3AstFM17default_fun_flagsRM11fun_flags_t0(&v_140, 0), _fx_catch_8);
               _fx_R16Ast__fun_flags_t v_141 =
                  { v_140.fun_flag_pure, v_140.fun_flag_ccode, v_140.fun_flag_have_keywords, v_140.fun_flag_inline, true,
                     v_140.fun_flag_really_nothrow, v_140.fun_flag_private, v_140.fun_flag_ctor, v_140.fun_flag_method_of,
                     v_140.fun_flag_uses_fv, v_140.fun_flag_recursive, v_140.fun_flag_instance };
               _fx_make_R17C_form__cdeffun_t(&free_f_2, &free_f_cname_1, v_116, _fx_g22C_gen_fdecls__CTypVoid, v_117, &v_141, 0,
                  &ke_loc_1, &v_118);
               FX_CALL(_fx_make_rR17C_form__cdeffun_t(&v_118, &cf_2), _fx_catch_8);
               _fx_M6C_formFM4CFunN15C_form__cinfo_t1rRM9cdeffun_t(cf_2, &v_119);
               FX_CALL(_fx_M6C_formFM13set_idc_entryv2R9Ast__id_tN15C_form__cinfo_t(&free_f_2, &v_119, 0), _fx_catch_8);
               FX_CALL(_fx_M6C_formFM7CDefFunN15C_form__cstmt_t1rRM9cdeffun_t(cf_2, &v_120), _fx_catch_8);
               FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_120, 0, true, &v_121), _fx_catch_8);
               _fx_make_T2R9Ast__id_tLN15C_form__cstmt_t(&free_f_2, v_121, &v_111);
            }
            _fx_R9Ast__id_t free_f_3 = v_111.t0;
            FX_COPY_PTR(v_111.t1, &free_f_decl_0);
            FX_CALL(
               _fx_M6C_formFM10CTypStructN14C_form__ctyp_t2Nt6option1R9Ast__id_tLT2R9Ast__id_tN14C_form__ctyp_t(
                  &_fx_g20C_gen_fdecls__None1_, relems_3, &v_122), _fx_catch_8);
            _fx_Ta2R9Ast__id_t v_142 = { _fx_g9Ast__noid, free_f_3 };
            _fx_Ta2R9Ast__id_t v_143 = { _fx_g9Ast__noid, _fx_g9Ast__noid };
            _fx_make_R17C_form__ctprops_t(false, true, false, true, 0, &v_142, &v_143, &v_123);
            _fx_make_R17C_form__cdeftyp_t(&exn_data_id_0, v_122, &exn_data_cname_0, &v_123, 1, &_fx_g9Ast__noid, 0,
               &_fx_g9Ast__noid, 0, &ke_loc_1, &v_124);
            FX_CALL(_fx_make_rR17C_form__cdeftyp_t(&v_124, &exn_data_ct_0), _fx_catch_8);
            FX_CALL(
               _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(&free_f_3,
                  _fx_g21C_form__std_fx_free_t, &ke_loc_1, &free_f_exp_0, 0), _fx_catch_8);
            FX_CALL(
               _fx_M11C_gen_typesFM9ktyp2ctypN14C_form__ctyp_t2N14K_form__ktyp_tR10Ast__loc_t(ke_typ_0, &ke_loc_1, &v_125, 0),
               _fx_catch_8);
            _fx_make_R17C_form__cdefexn_t(&ke_name_0, &ke_cname_0, &ke_base_cname_0, v_125, ke_std_0, &ke_tag_1, &exn_data_id_0,
               &exn_info_0, &ke_make_0, ke_scope_1, &ke_loc_1, &v_126);
            FX_CALL(_fx_make_rR17C_form__cdefexn_t(&v_126, &cexn_0), _fx_catch_8);
            _fx_M6C_formFM4CExnN15C_form__cinfo_t1rRM9cdefexn_t(cexn_0, &v_127);
            FX_CALL(_fx_M6C_formFM13set_idc_entryv2R9Ast__id_tN15C_form__cinfo_t(&ke_name_0, &v_127, 0), _fx_catch_8);
            _fx_M6C_formFM4CTypN15C_form__cinfo_t1rRM9cdeftyp_t(exn_data_ct_0, &v_128);
            FX_CALL(_fx_M6C_formFM13set_idc_entryv2R9Ast__id_tN15C_form__cinfo_t(&exn_data_id_0, &v_128, 0), _fx_catch_8);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(free_f_exp_0, 0, true, &v_129), _fx_catch_8);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(info_exp_0, v_129, false, &v_129), _fx_catch_8);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(ke_tag_exp_0, v_129, false, &v_129), _fx_catch_8);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(exn_strname_1, v_129, false, &v_129), _fx_catch_8);
            FX_CALL(
               _fx_M6C_formFM9make_callN14C_form__cexp_t4R9Ast__id_tLN14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(
                  &_fx_g22C_form__std_FX_REG_EXN, v_129, _fx_g22C_gen_fdecls__CTypVoid, &ke_loc_1, &call_reg_exn_2, 0),
               _fx_catch_8);
            FX_CALL(_fx_M6C_formFM4CExpN15C_form__cstmt_t1N14C_form__cexp_t(call_reg_exn_2, &v_130), _fx_catch_8);
            FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_130, 0, true, &v_131), _fx_catch_8);
            FX_CALL(_fx_M6C_formFM7CDefTypN15C_form__cstmt_t1rRM9cdeftyp_t(exn_data_ct_0, &v_132), _fx_catch_8);
            FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_132, decls_1, true, &v_133), _fx_catch_8);
            FX_CALL(
               _fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(free_f_decl_0, v_133,
                  &v_134, 0), _fx_catch_8);
            FX_CALL(_fx_M6C_formFM7CDefTypN15C_form__cstmt_t1rRM9cdeftyp_t(exn_data_ct_0, &v_135), _fx_catch_8);
            FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_135, 0, true, &v_136), _fx_catch_8);
            _fx_make_Ta3LN15C_form__cstmt_t(v_131, v_134, v_136, &v_92);

         _fx_catch_8: ;
            if (v_136) {
               _fx_free_LN15C_form__cstmt_t(&v_136);
            }
            if (v_135) {
               _fx_free_N15C_form__cstmt_t(&v_135);
            }
            if (v_134) {
               _fx_free_LN15C_form__cstmt_t(&v_134);
            }
            if (v_133) {
               _fx_free_LN15C_form__cstmt_t(&v_133);
            }
            if (v_132) {
               _fx_free_N15C_form__cstmt_t(&v_132);
            }
            if (v_131) {
               _fx_free_LN15C_form__cstmt_t(&v_131);
            }
            if (v_130) {
               _fx_free_N15C_form__cstmt_t(&v_130);
            }
            if (call_reg_exn_2) {
               _fx_free_N14C_form__cexp_t(&call_reg_exn_2);
            }
            if (v_129) {
               _fx_free_LN14C_form__cexp_t(&v_129);
            }
            _fx_free_N15C_form__cinfo_t(&v_128);
            _fx_free_N15C_form__cinfo_t(&v_127);
            if (cexn_0) {
               _fx_free_rR17C_form__cdefexn_t(&cexn_0);
            }
            _fx_free_R17C_form__cdefexn_t(&v_126);
            if (v_125) {
               _fx_free_N14C_form__ctyp_t(&v_125);
            }
            if (free_f_exp_0) {
               _fx_free_N14C_form__cexp_t(&free_f_exp_0);
            }
            if (exn_data_ct_0) {
               _fx_free_rR17C_form__cdeftyp_t(&exn_data_ct_0);
            }
            _fx_free_R17C_form__cdeftyp_t(&v_124);
            _fx_free_R17C_form__ctprops_t(&v_123);
            if (v_122) {
               _fx_free_N14C_form__ctyp_t(&v_122);
            }
            if (free_f_decl_0) {
               _fx_free_LN15C_form__cstmt_t(&free_f_decl_0);
            }
            if (v_121) {
               _fx_free_LN15C_form__cstmt_t(&v_121);
            }
            if (v_120) {
               _fx_free_N15C_form__cstmt_t(&v_120);
            }
            _fx_free_N15C_form__cinfo_t(&v_119);
            if (cf_2) {
               _fx_free_rR17C_form__cdeffun_t(&cf_2);
            }
            _fx_free_R17C_form__cdeffun_t(&v_118);
            if (v_117) {
               _fx_free_LN15C_form__cstmt_t(&v_117);
            }
            if (v_116) {
               _fx_free_LT3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_116);
            }
            _fx_free_T3R9Ast__id_tN14C_form__ctyp_tLN19C_form__carg_attr_t(&v_115);
            FX_FREE_LIST_SIMPLE(&v_114);
            FX_FREE_STR(&free_f_cname_1);
            if (freecode_1) {
               _fx_free_LN15C_form__cstmt_t(&freecode_1);
            }
            if (v_113) {
               _fx_free_N15C_form__cstmt_t(&v_113);
            }
            if (call_free_1) {
               _fx_free_N14C_form__cexp_t(&call_free_1);
            }
            if (v_112) {
               _fx_free_LN14C_form__cexp_t(&v_112);
            }
            _fx_free_T2R9Ast__id_tLN15C_form__cstmt_t(&v_111);
            if (relems_3) {
               _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&relems_3);
            }
            if (v_110) {
               _fx_free_LT2R9Ast__id_tN14C_form__ctyp_t(&v_110);
            }
            _fx_free_T2R9Ast__id_tN14C_form__ctyp_t(&v_109);
            _fx_free_T2R9Ast__id_tN14C_form__ctyp_t(&v_108);
            if (free_ccode_3) {
               _fx_free_LN15C_form__cstmt_t(&free_ccode_3);
            }
            if (dst_data_exp_0) {
               _fx_free_N14C_form__cexp_t(&dst_data_exp_0);
            }
            if (ke_ctyp_0) {
               _fx_free_N14C_form__ctyp_t(&ke_ctyp_0);
            }
            if (dst_exp_1) {
               _fx_free_N14C_form__cexp_t(&dst_exp_1);
            }
            if (exn_data_ptr_t_0) {
               _fx_free_N14C_form__ctyp_t(&exn_data_ptr_t_0);
            }
            if (v_107) {
               _fx_free_N14C_form__ctyp_t(&v_107);
            }
            FX_FREE_STR(&exn_data_cname_0);
            FX_FREE_STR(&v_106);
            FX_FREE_STR(&v_105);
            FX_FREE_STR(&v_104);
         }
         FX_CHECK_EXN(_fx_catch_9);
         FX_COPY_PTR(v_92.t0, &reg_calls_0);
         FX_COPY_PTR(v_92.t1, &decls_2);
         FX_COPY_PTR(v_92.t2, &exn_data_decls_0);
         FX_CALL(
            _fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(decls_2, top_fcv_decls_0,
               &v_93, 0), _fx_catch_9);
         _fx_free_LN15C_form__cstmt_t(&top_fcv_decls_0);
         FX_COPY_PTR(v_93, &top_fcv_decls_0);
         FX_CALL(
            _fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(reg_calls_0,
               mod_init_calls_0, &v_94, 0), _fx_catch_9);
         _fx_free_LN15C_form__cstmt_t(&mod_init_calls_0);
         FX_COPY_PTR(v_94, &mod_init_calls_0);
         FX_CALL(
            _fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(exn_data_decls_0,
               mod_exn_data_decls_0, &v_95, 0), _fx_catch_9);
         _fx_free_LN15C_form__cstmt_t(&mod_exn_data_decls_0);
         FX_COPY_PTR(v_95, &mod_exn_data_decls_0);

      _fx_catch_9: ;
         if (v_95) {
            _fx_free_LN15C_form__cstmt_t(&v_95);
         }
         if (v_94) {
            _fx_free_LN15C_form__cstmt_t(&v_94);
         }
         if (v_93) {
            _fx_free_LN15C_form__cstmt_t(&v_93);
         }
         if (exn_data_decls_0) {
            _fx_free_LN15C_form__cstmt_t(&exn_data_decls_0);
         }
         if (decls_2) {
            _fx_free_LN15C_form__cstmt_t(&decls_2);
         }
         if (reg_calls_0) {
            _fx_free_LN15C_form__cstmt_t(&reg_calls_0);
         }
         _fx_free_Ta3LN15C_form__cstmt_t(&v_92);
         if (ke_tag_exp_0) {
            _fx_free_N14C_form__cexp_t(&ke_tag_exp_0);
         }
         if (decls_1) {
            _fx_free_LN15C_form__cstmt_t(&decls_1);
         }
         if (info_exp_0) {
            _fx_free_N14C_form__cexp_t(&info_exp_0);
         }
         _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(&v_91);
         _fx_free_Nt6option1N14C_form__cexp_t(&v_90);
         if (v_89) {
            _fx_free_N14C_form__cexp_t(&v_89);
         }
         _fx_free_R16Ast__val_flags_t(&cv_flags_2);
         _fx_free_R16Ast__val_flags_t(&v_88);
         FX_FREE_STR(&info_cname_0);
         FX_FREE_STR(&v_87);
         FX_FREE_STR(&v_86);
         FX_FREE_STR(&v_85);
         if (exn_strname_1) {
            _fx_free_N14C_form__cexp_t(&exn_strname_1);
         }
         _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&v_84);
         _fx_free_N14K_form__klit_t(&v_83);
         FX_FREE_STR(&exn_strname_0);
         FX_FREE_STR(&v_82);
         if (ke_typ_0) {
            _fx_free_N14K_form__ktyp_t(&ke_typ_0);
         }
         FX_FREE_STR(&ke_cname_0);
         FX_FREE_STR(&ke_base_cname_0);
         FX_FREE_LIST_SIMPLE(&ke_scope_1);
         goto _fx_endmatch_0;
      }
      if (tag_0 == 35) {
         _fx_N14C_form__cexp_t id_exp_0 = 0;
         _fx_N14C_form__cexp_t v_144 = 0;
         _fx_LN14C_form__cexp_t v_145 = 0;
         _fx_N14C_form__cexp_t reg_iface_call_0 = 0;
         _fx_N15C_form__cstmt_t v_146 = 0;
         _fx_LN15C_form__cstmt_t v_147 = 0;
         _fx_R23K_form__kdefinterface_t* v_148 = &e_0->u.KDefInterface->data;
         _fx_R10Ast__loc_t ki_loc_0 = v_148->ki_loc;
         _fx_R9Ast__id_t ki_id_0 = v_148->ki_id;
         FX_CALL(
            _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(&ki_id_0,
               _fx_g21C_gen_fdecls__CTypInt, &ki_loc_0, &id_exp_0, 0), _fx_catch_10);
         _fx_R9Ast__id_t v_149;
         fx_str_t slit_23 = FX_MAKE_STR("fx_register_iface");
         FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_23, &v_149, 0), _fx_catch_10);
         FX_CALL(_fx_M6C_formFM13cexp_get_addrN14C_form__cexp_t1N14C_form__cexp_t(id_exp_0, &v_144, 0), _fx_catch_10);
         FX_CALL(_fx_cons_LN14C_form__cexp_t(v_144, 0, true, &v_145), _fx_catch_10);
         FX_CALL(
            _fx_M6C_formFM9make_callN14C_form__cexp_t4R9Ast__id_tLN14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(&v_149, v_145,
               _fx_g22C_gen_fdecls__CTypVoid, &ki_loc_0, &reg_iface_call_0, 0), _fx_catch_10);
         FX_CALL(_fx_M6C_formFM4CExpN15C_form__cstmt_t1N14C_form__cexp_t(reg_iface_call_0, &v_146), _fx_catch_10);
         FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_146, mod_init_calls_0, true, &v_147), _fx_catch_10);
         _fx_free_LN15C_form__cstmt_t(&mod_init_calls_0);
         FX_COPY_PTR(v_147, &mod_init_calls_0);

      _fx_catch_10: ;
         if (v_147) {
            _fx_free_LN15C_form__cstmt_t(&v_147);
         }
         if (v_146) {
            _fx_free_N15C_form__cstmt_t(&v_146);
         }
         if (reg_iface_call_0) {
            _fx_free_N14C_form__cexp_t(&reg_iface_call_0);
         }
         if (v_145) {
            _fx_free_LN14C_form__cexp_t(&v_145);
         }
         if (v_144) {
            _fx_free_N14C_form__cexp_t(&v_144);
         }
         if (id_exp_0) {
            _fx_free_N14C_form__cexp_t(&id_exp_0);
         }
         goto _fx_endmatch_0;
      }
      if (tag_0 == 34) {
         _fx_copy_R21K_form__kdefvariant_t(&e_0->u.KDefVariant->data, &v_6);
         _fx_R10Ast__loc_t* kvar_loc_0 = &v_6.kvar_loc;
         _fx_LT2R9Ast__id_tLR9Ast__id_t kvar_ifaces_0 = v_6.kvar_ifaces;
         _fx_R9Ast__id_t* kvar_name_0 = &v_6.kvar_name;
         if (kvar_ifaces_0 != 0) {
            _fx_N15C_form__cinfo_t v_150 = {0};
            _fx_rR17C_form__cdeftyp_t ct_1 = 0;
            _fx_N14C_form__ctyp_t entry_ctyp_0 = 0;
            _fx_LN19C_form__ctyp_attr_t v_151 = 0;
            _fx_N14C_form__ctyp_t entries_ctyp_0 = 0;
            _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t __fold_result___2 = {0};
            _fx_LT2R9Ast__id_tLR9Ast__id_t kvar_ifaces_1 = 0;
            _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t v_152 = {0};
            _fx_LN15C_form__cstmt_t init_ccode_0 = 0;
            _fx_LR9Ast__id_t ids_0 = 0;
            _fx_LN14C_form__cexp_t pairs_0 = 0;
            _fx_Rt6Set__t1R9Ast__id_t all_ids_0 = {0};
            _fx_LN14C_form__cexp_t v_153 = 0;
            _fx_LT2R9Ast__id_tLR9Ast__id_t kvar_ifaces_2 = 0;
            _fx_N14C_form__ctyp_t ifaces_ctyp_0 = 0;
            fx_str_t v_154 = {0};
            fx_str_t v_155 = {0};
            fx_str_t ifaces_cname_0 = {0};
            _fx_R16Ast__val_flags_t v_156 = {0};
            _fx_R16Ast__val_flags_t cv_flags_4 = {0};
            _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t v_157 = {0};
            _fx_N14C_form__cexp_t ifaces_id_exp_0 = 0;
            _fx_LN15C_form__cstmt_t decl_ifaces_id_0 = 0;
            _fx_LN14C_form__cexp_t v_158 = 0;
            _fx_T2N14C_form__ctyp_tR10Ast__loc_t v_159 = {0};
            _fx_N14C_form__cexp_t entries_init_exp_0 = 0;
            _fx_R16Ast__val_flags_t v_160 = {0};
            _fx_Nt6option1N14C_form__cexp_t v_161 = {0};
            _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t v_162 = {0};
            _fx_N14C_form__cexp_t iface_entries_exp_0 = 0;
            _fx_LN15C_form__cstmt_t init_ccode_1 = 0;
            _fx_LN19C_form__ctyp_attr_t v_163 = 0;
            _fx_N14C_form__ctyp_t ids_ctyp_0 = 0;
            _fx_LR9Ast__id_t v_164 = 0;
            _fx_LN14C_form__cexp_t v_165 = 0;
            _fx_T2N14C_form__ctyp_tR10Ast__loc_t v_166 = {0};
            _fx_N14C_form__cexp_t ids_init_exp_0 = 0;
            _fx_R16Ast__val_flags_t v_167 = {0};
            _fx_Nt6option1N14C_form__cexp_t v_168 = {0};
            _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t v_169 = {0};
            _fx_N14C_form__cexp_t ids_exp_0 = 0;
            _fx_LN15C_form__cstmt_t init_ccode_2 = 0;
            _fx_N14C_form__cexp_t v_170 = 0;
            _fx_N14C_form__cexp_t v_171 = 0;
            _fx_N14C_form__cexp_t v_172 = 0;
            _fx_LN14C_form__cexp_t v_173 = 0;
            _fx_LN14C_form__cexp_t init_ifaces_args_0 = 0;
            _fx_N14C_form__cexp_t call_init_ifaces_0 = 0;
            _fx_N15C_form__cstmt_t v_174 = 0;
            _fx_LN15C_form__cstmt_t init_ccode_3 = 0;
            _fx_R17C_form__cdeftyp_t v_175 = {0};
            _fx_LN15C_form__cstmt_t v_176 = 0;
            _fx_LN15C_form__cstmt_t v_177 = 0;
            _fx_N15C_form__cstmt_t v_178 = 0;
            _fx_LN15C_form__cstmt_t v_179 = 0;
            FX_CALL(_fx_M6C_formFM6cinfo_N15C_form__cinfo_t2R9Ast__id_tR10Ast__loc_t(kvar_name_0, kvar_loc_0, &v_150, 0),
               _fx_catch_18);
            if (v_150.tag == 4) {
               FX_COPY_PTR(v_150.u.CTyp, &ct_1);
            }
            else {
               fx_exn_t v_180 = {0};
               fx_str_t slit_24 = FX_MAKE_STR("variant type \'{idk2str(kvar_name, kvar_loc)}\' was not converted to C yet");
               FX_CALL(_fx_M3AstFM11compile_errE2RM5loc_tS(kvar_loc_0, &slit_24, &v_180, 0), _fx_catch_11);
               FX_THROW(&v_180, false, _fx_catch_11);

            _fx_catch_11: ;
               fx_free_exn(&v_180);
            }
            FX_CHECK_EXN(_fx_catch_18);
            _fx_R9Ast__id_t free_f_4 = ct_1->data.ct_props.ctp_free.t1;
            _fx_R9Ast__id_t v_181;
            fx_str_t slit_25 = FX_MAKE_STR("fx_iface_entry_t");
            FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_25, &v_181, 0), _fx_catch_18);
            FX_CALL(_fx_M6C_formFM8CTypNameN14C_form__ctyp_t1R9Ast__id_t(&v_181, &entry_ctyp_0), _fx_catch_18);
            FX_CALL(_fx_cons_LN19C_form__ctyp_attr_t(&_fx_g24C_gen_fdecls__CTypStatic, 0, true, &v_151), _fx_catch_18);
            FX_CALL(
               _fx_M6C_formFM12CTypRawArrayN14C_form__ctyp_t2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(v_151, entry_ctyp_0,
                  &entries_ctyp_0), _fx_catch_18);
            _fx_make_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(0, 0, 0, &_fx_g16Ast__empty_idset,
               &__fold_result___2);
            FX_COPY_PTR(kvar_ifaces_0, &kvar_ifaces_1);
            _fx_LT2R9Ast__id_tLR9Ast__id_t lst_3 = kvar_ifaces_1;
            for (; lst_3; lst_3 = lst_3->tl) {
               _fx_LR9Ast__id_t methods_0 = 0;
               _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t v_182 = {0};
               _fx_LN15C_form__cstmt_t init_ccode_4 = 0;
               _fx_LR9Ast__id_t ids_1 = 0;
               _fx_LN14C_form__cexp_t pairs_1 = 0;
               _fx_Rt6Set__t1R9Ast__id_t all_ids_1 = {0};
               _fx_LN14C_form__cexp_t mptrs_0 = 0;
               _fx_LN19C_form__ctyp_attr_t v_183 = 0;
               _fx_N14C_form__ctyp_t vtbl_ctyp_0 = 0;
               _fx_T2N14C_form__ctyp_tR10Ast__loc_t v_184 = {0};
               _fx_N14C_form__cexp_t vtbl_init_exp_0 = 0;
               _fx_R16Ast__val_flags_t v_185 = {0};
               _fx_Nt6option1N14C_form__cexp_t v_186 = {0};
               _fx_T2N14C_form__cexp_tLN15C_form__cstmt_t v_187 = {0};
               _fx_LN15C_form__cstmt_t init_ccode_5 = 0;
               _fx_N14K_form__ktyp_t v_188 = 0;
               _fx_Nt6option1rR23K_form__kdefinterface_t v_189 = {0};
               _fx_rR23K_form__kdefinterface_t iface_0 = 0;
               _fx_N14C_form__cexp_t v_190 = 0;
               _fx_N14C_form__cexp_t v_191 = 0;
               _fx_LN14C_form__cexp_t v_192 = 0;
               _fx_T2N14C_form__ctyp_tR10Ast__loc_t v_193 = {0};
               _fx_N14C_form__cexp_t pair_0 = 0;
               _fx_Rt6Set__t1R9Ast__id_t v_194 = {0};
               _fx_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t v_195 = {0};
               _fx_T2R9Ast__id_tLR9Ast__id_t* __pat___1 = &lst_3->hd;
               _fx_R9Ast__id_t iname_0 = __pat___1->t0;
               FX_COPY_PTR(__pat___1->t1, &methods_0);
               _fx_copy_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(&__fold_result___2, &v_182);
               FX_COPY_PTR(v_182.t0, &init_ccode_4);
               FX_COPY_PTR(v_182.t1, &ids_1);
               FX_COPY_PTR(v_182.t2, &pairs_1);
               _fx_copy_Rt6Set__t1R9Ast__id_t(&v_182.t3, &all_ids_1);
               _fx_LN14C_form__cexp_t lstend_0 = 0;
               _fx_LR9Ast__id_t lst_4 = methods_0;
               for (; lst_4; lst_4 = lst_4->tl) {
                  _fx_N14C_form__cexp_t res_3 = 0;
                  _fx_R9Ast__id_t* m_0 = &lst_4->hd;
                  FX_CALL(
                     _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(m_0,
                        _fx_g23C_form__std_CTypVoidPtr, kvar_loc_0, &res_3, 0), _fx_catch_12);
                  _fx_LN14C_form__cexp_t node_0 = 0;
                  FX_CALL(_fx_cons_LN14C_form__cexp_t(res_3, 0, false, &node_0), _fx_catch_12);
                  FX_LIST_APPEND(mptrs_0, lstend_0, node_0);

               _fx_catch_12: ;
                  if (res_3) {
                     _fx_free_N14C_form__cexp_t(&res_3);
                  }
                  FX_CHECK_EXN(_fx_catch_14);
               }
               FX_CALL(_fx_cons_LN19C_form__ctyp_attr_t(&_fx_g23C_gen_fdecls__CTypConst, 0, true, &v_183), _fx_catch_14);
               FX_CALL(_fx_cons_LN19C_form__ctyp_attr_t(&_fx_g24C_gen_fdecls__CTypStatic, v_183, false, &v_183), _fx_catch_14);
               FX_CALL(
                  _fx_M6C_formFM12CTypRawArrayN14C_form__ctyp_t2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(v_183,
                     _fx_g23C_form__std_CTypVoidPtr, &vtbl_ctyp_0), _fx_catch_14);
               _fx_make_T2N14C_form__ctyp_tR10Ast__loc_t(vtbl_ctyp_0, kvar_loc_0, &v_184);
               FX_CALL(
                  _fx_M6C_formFM8CExpInitN14C_form__cexp_t2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(mptrs_0, &v_184,
                     &vtbl_init_exp_0), _fx_catch_14);
               _fx_R9Ast__id_t vtbl_0;
               fx_str_t slit_26 = FX_MAKE_STR("vtbl");
               FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &slit_26, &vtbl_0, 0), _fx_catch_14);
               FX_CALL(_fx_M3AstFM21default_tempval_flagsRM11val_flags_t0(&v_185, 0), _fx_catch_14);
               _fx_M12C_gen_fdeclsFM4SomeNt6option1N14C_form__cexp_t1N14C_form__cexp_t(vtbl_init_exp_0, &v_186);
               fx_str_t slit_27 = FX_MAKE_STR("");
               FX_CALL(
                  _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
                     &vtbl_0, vtbl_ctyp_0, &v_185, &slit_27, &v_186, init_ccode_4, kvar_loc_0, &v_187, 0), _fx_catch_14);
               FX_COPY_PTR(v_187.t1, &init_ccode_5);
               FX_CALL(_fx_M6K_formFM8KTypNameN14K_form__ktyp_t1R9Ast__id_t(&iname_0, &v_188), _fx_catch_14);
               FX_CALL(
                  _fx_M6K_formFM18get_kinterface_optNt6option1rRM15kdefinterface_t2N14K_form__ktyp_tR10Ast__loc_t(v_188,
                     kvar_loc_0, &v_189, 0), _fx_catch_14);
               if (v_189.tag == 2) {
                  FX_COPY_PTR(v_189.u.Some, &iface_0);
               }
               else {
                  fx_exn_t v_196 = {0};
                  fx_str_t slit_28 =
                     FX_MAKE_STR("cgen: cannot find information about interface \'{idk2str(iname, kvar_loc)}\'");
                  FX_CALL(_fx_M3AstFM11compile_errE2RM5loc_tS(kvar_loc_0, &slit_28, &v_196, 0), _fx_catch_13);
                  FX_THROW(&v_196, false, _fx_catch_13);

               _fx_catch_13: ;
                  fx_free_exn(&v_196);
               }
               FX_CHECK_EXN(_fx_catch_14);
               FX_CALL(_fx_M6C_formFM12make_int_expN14C_form__cexp_t2iR10Ast__loc_t(0, kvar_loc_0, &v_190, 0), _fx_catch_14);
               FX_CALL(_fx_M6C_formFM11make_id_expN14C_form__cexp_t2R9Ast__id_tR10Ast__loc_t(&vtbl_0, kvar_loc_0, &v_191, 0),
                  _fx_catch_14);
               FX_CALL(_fx_cons_LN14C_form__cexp_t(v_191, 0, true, &v_192), _fx_catch_14);
               FX_CALL(_fx_cons_LN14C_form__cexp_t(v_190, v_192, false, &v_192), _fx_catch_14);
               _fx_make_T2N14C_form__ctyp_tR10Ast__loc_t(entry_ctyp_0, kvar_loc_0, &v_193);
               FX_CALL(
                  _fx_M6C_formFM8CExpInitN14C_form__cexp_t2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(v_192, &v_193,
                     &pair_0), _fx_catch_14);
               _fx_R9Ast__id_t v_197 = iface_0->data.ki_id;
               FX_CALL(_fx_cons_LR9Ast__id_t(&v_197, ids_1, false, &ids_1), _fx_catch_14);
               FX_CALL(_fx_cons_LN14C_form__cexp_t(pair_0, pairs_1, false, &pairs_1), _fx_catch_14);
               _fx_R9Ast__id_t v_198 = iface_0->data.ki_id;
               FX_CALL(
                  _fx_M12C_gen_fdeclsFM3addRt6Set__t1R9Ast__id_t2Rt6Set__t1R9Ast__id_tR9Ast__id_t(&all_ids_1, &v_198, &v_194,
                     0), _fx_catch_14);
               _fx_make_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(init_ccode_5, ids_1, pairs_1,
                  &v_194, &v_195);
               _fx_free_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(&__fold_result___2);
               _fx_copy_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(&v_195, &__fold_result___2);

            _fx_catch_14: ;
               _fx_free_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(&v_195);
               _fx_free_Rt6Set__t1R9Ast__id_t(&v_194);
               if (pair_0) {
                  _fx_free_N14C_form__cexp_t(&pair_0);
               }
               _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&v_193);
               if (v_192) {
                  _fx_free_LN14C_form__cexp_t(&v_192);
               }
               if (v_191) {
                  _fx_free_N14C_form__cexp_t(&v_191);
               }
               if (v_190) {
                  _fx_free_N14C_form__cexp_t(&v_190);
               }
               if (iface_0) {
                  _fx_free_rR23K_form__kdefinterface_t(&iface_0);
               }
               _fx_free_Nt6option1rR23K_form__kdefinterface_t(&v_189);
               if (v_188) {
                  _fx_free_N14K_form__ktyp_t(&v_188);
               }
               if (init_ccode_5) {
                  _fx_free_LN15C_form__cstmt_t(&init_ccode_5);
               }
               _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(&v_187);
               _fx_free_Nt6option1N14C_form__cexp_t(&v_186);
               _fx_free_R16Ast__val_flags_t(&v_185);
               if (vtbl_init_exp_0) {
                  _fx_free_N14C_form__cexp_t(&vtbl_init_exp_0);
               }
               _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&v_184);
               if (vtbl_ctyp_0) {
                  _fx_free_N14C_form__ctyp_t(&vtbl_ctyp_0);
               }
               FX_FREE_LIST_SIMPLE(&v_183);
               if (mptrs_0) {
                  _fx_free_LN14C_form__cexp_t(&mptrs_0);
               }
               _fx_free_Rt6Set__t1R9Ast__id_t(&all_ids_1);
               if (pairs_1) {
                  _fx_free_LN14C_form__cexp_t(&pairs_1);
               }
               FX_FREE_LIST_SIMPLE(&ids_1);
               if (init_ccode_4) {
                  _fx_free_LN15C_form__cstmt_t(&init_ccode_4);
               }
               _fx_free_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(&v_182);
               FX_FREE_LIST_SIMPLE(&methods_0);
               FX_CHECK_EXN(_fx_catch_18);
            }
            _fx_copy_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(&__fold_result___2, &v_152);
            FX_COPY_PTR(v_152.t0, &init_ccode_0);
            FX_COPY_PTR(v_152.t1, &ids_0);
            FX_COPY_PTR(v_152.t2, &pairs_0);
            _fx_copy_Rt6Set__t1R9Ast__id_t(&v_152.t3, &all_ids_0);
            FX_CALL(_fx_M12C_gen_fdeclsFM3revLN14C_form__cexp_t1LN14C_form__cexp_t(pairs_0, &v_153, 0), _fx_catch_18);
            FX_COPY_PTR(kvar_ifaces_0, &kvar_ifaces_2);
            _fx_LT2R9Ast__id_tLR9Ast__id_t lst_5 = kvar_ifaces_2;
            _fx_LN14C_form__cexp_t lst_6 = v_153;
            for (; lst_5 && lst_6; lst_6 = lst_6->tl, lst_5 = lst_5->tl) {
               _fx_N14C_form__cexp_t pair_1 = lst_6->hd;
               _fx_T2R9Ast__id_tLR9Ast__id_t* __pat___2 = &lst_5->hd;
               _fx_R9Ast__id_t iname_1 = __pat___2->t0;
               _fx_R9Ast__id_t iname_2 = iname_1;
               for (;;) {
                  _fx_N14K_form__ktyp_t v_199 = 0;
                  _fx_Nt6option1rR23K_form__kdefinterface_t v_200 = {0};
                  _fx_LR9Ast__id_t v_201 = 0;
                  _fx_LN14C_form__cexp_t v_202 = 0;
                  _fx_Rt6Set__t1R9Ast__id_t v_203 = {0};
                  bool res_4;
                  FX_CALL(_fx_M12C_gen_fdeclsFM6__ne__B2R9Ast__id_tR9Ast__id_t(&iname_2, &_fx_g9Ast__noid, &res_4, 0),
                     _fx_catch_15);
                  if (!res_4) {
                     FX_BREAK(_fx_catch_15);
                  }
                  FX_CALL(_fx_M6K_formFM8KTypNameN14K_form__ktyp_t1R9Ast__id_t(&iname_2, &v_199), _fx_catch_15);
                  FX_CALL(
                     _fx_M6K_formFM18get_kinterface_optNt6option1rRM15kdefinterface_t2N14K_form__ktyp_tR10Ast__loc_t(v_199,
                        kvar_loc_0, &v_200, 0), _fx_catch_15);
                  _fx_Ta2R9Ast__id_t v_204;
                  if (v_200.tag == 2) {
                     _fx_rR23K_form__kdefinterface_t iface_1 = v_200.u.Some;
                     _fx_R9Ast__id_t v_205 = iface_1->data.ki_id;
                     _fx_R9Ast__id_t v_206 = iface_1->data.ki_base;
                     _fx_Ta2R9Ast__id_t tup_0 = { v_205, v_206 };
                     v_204 = tup_0;
                  }
                  else {
                     _fx_Ta2R9Ast__id_t tup_1 = { _fx_g9Ast__noid, _fx_g9Ast__noid }; v_204 = tup_1;
                  }
                  FX_CHECK_EXN(_fx_catch_15);
                  _fx_R9Ast__id_t iface_id_0 = v_204.t0;
                  _fx_R9Ast__id_t parent_0 = v_204.t1;
                  bool v_207;
                  FX_CALL(_fx_M12C_gen_fdeclsFM3memB2Rt6Set__t1R9Ast__id_tR9Ast__id_t(&all_ids_0, &iface_id_0, &v_207, 0),
                     _fx_catch_15);
                  if (!v_207) {
                     FX_CALL(_fx_cons_LR9Ast__id_t(&iface_id_0, ids_0, true, &v_201), _fx_catch_15);
                     FX_FREE_LIST_SIMPLE(&ids_0);
                     FX_COPY_PTR(v_201, &ids_0);
                     FX_CALL(_fx_cons_LN14C_form__cexp_t(pair_1, pairs_0, true, &v_202), _fx_catch_15);
                     _fx_free_LN14C_form__cexp_t(&pairs_0);
                     FX_COPY_PTR(v_202, &pairs_0);
                     FX_CALL(
                        _fx_M12C_gen_fdeclsFM3addRt6Set__t1R9Ast__id_t2Rt6Set__t1R9Ast__id_tR9Ast__id_t(&all_ids_0, &iface_id_0,
                           &v_203, 0), _fx_catch_15);
                     _fx_free_Rt6Set__t1R9Ast__id_t(&all_ids_0);
                     _fx_copy_Rt6Set__t1R9Ast__id_t(&v_203, &all_ids_0);
                  }
                  iname_2 = parent_0;

               _fx_catch_15: ;
                  _fx_free_Rt6Set__t1R9Ast__id_t(&v_203);
                  if (v_202) {
                     _fx_free_LN14C_form__cexp_t(&v_202);
                  }
                  FX_FREE_LIST_SIMPLE(&v_201);
                  _fx_free_Nt6option1rR23K_form__kdefinterface_t(&v_200);
                  if (v_199) {
                     _fx_free_N14K_form__ktyp_t(&v_199);
                  }
                  FX_CHECK_BREAK();
                  FX_CHECK_EXN(_fx_catch_16);
               }

            _fx_catch_16: ;
               FX_CHECK_EXN(_fx_catch_18);
            }
            int s_0 = !lst_5 + !lst_6;
            FX_CHECK_EQ_SIZE(s_0 == 0 || s_0 == 2, _fx_catch_18);
            _fx_R9Ast__id_t v_208;
            fx_str_t slit_29 = FX_MAKE_STR("fx_ifaces_t");
            FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_29, &v_208, 0), _fx_catch_18);
            FX_CALL(_fx_M6C_formFM8CTypNameN14C_form__ctyp_t1R9Ast__id_t(&v_208, &ifaces_ctyp_0), _fx_catch_18);
            FX_CALL(_fx_M3AstFM2ppS1RM4id_t(kvar_name_0, &v_154, 0), _fx_catch_18);
            fx_str_t slit_30 = FX_MAKE_STR("_ifaces");
            {
               const fx_str_t strs_8[] = { v_154, slit_30 };
               FX_CALL(fx_strjoin(0, 0, 0, strs_8, 2, &v_155), _fx_catch_18);
            }
            _fx_R9Ast__id_t ifaces_id_0;
            FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &v_155, &ifaces_id_0, 0), _fx_catch_18);
            fx_str_t* kvar_cname_0 = &v_6.kvar_cname;
            fx_str_t slit_31 = FX_MAKE_STR("_ifaces");
            {
               const fx_str_t strs_9[] = { *kvar_cname_0, slit_31 };
               FX_CALL(fx_strjoin(0, 0, 0, strs_9, 2, &ifaces_cname_0), _fx_catch_18);
            }
            FX_CALL(_fx_M3AstFM17default_val_flagsRM11val_flags_t0(&v_156, 0), _fx_catch_18);
            _fx_make_R16Ast__val_flags_t(v_156.val_flag_arg, true, v_156.val_flag_temp, v_156.val_flag_tempref,
               v_156.val_flag_private, v_156.val_flag_subarray, v_156.val_flag_instance, &v_156.val_flag_method,
               v_156.val_flag_ctor, v_6.kvar_scope, &cv_flags_4);
            FX_CALL(
               _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
                  &ifaces_id_0, ifaces_ctyp_0, &cv_flags_4, &ifaces_cname_0, &_fx_g18C_gen_fdecls__None, 0, kvar_loc_0, &v_157,
                  0), _fx_catch_18);
            FX_COPY_PTR(v_157.t0, &ifaces_id_exp_0);
            FX_COPY_PTR(v_157.t1, &decl_ifaces_id_0);
            FX_CALL(_fx_M12C_gen_fdeclsFM3revLN14C_form__cexp_t1LN14C_form__cexp_t(pairs_0, &v_158, 0), _fx_catch_18);
            _fx_make_T2N14C_form__ctyp_tR10Ast__loc_t(entries_ctyp_0, kvar_loc_0, &v_159);
            FX_CALL(
               _fx_M6C_formFM8CExpInitN14C_form__cexp_t2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(v_158, &v_159,
                  &entries_init_exp_0), _fx_catch_18);
            _fx_R9Ast__id_t iface_entries_0;
            fx_str_t slit_32 = FX_MAKE_STR("ifaces_entries");
            FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &slit_32, &iface_entries_0, 0), _fx_catch_18);
            FX_CALL(_fx_M3AstFM21default_tempval_flagsRM11val_flags_t0(&v_160, 0), _fx_catch_18);
            _fx_M12C_gen_fdeclsFM4SomeNt6option1N14C_form__cexp_t1N14C_form__cexp_t(entries_init_exp_0, &v_161);
            fx_str_t slit_33 = FX_MAKE_STR("");
            FX_CALL(
               _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
                  &iface_entries_0, entries_ctyp_0, &v_160, &slit_33, &v_161, init_ccode_0, kvar_loc_0, &v_162, 0),
               _fx_catch_18);
            FX_COPY_PTR(v_162.t0, &iface_entries_exp_0);
            FX_COPY_PTR(v_162.t1, &init_ccode_1);
            FX_CALL(_fx_cons_LN19C_form__ctyp_attr_t(&_fx_g23C_gen_fdecls__CTypConst, 0, true, &v_163), _fx_catch_18);
            FX_CALL(
               _fx_M6C_formFM12CTypRawArrayN14C_form__ctyp_t2LN19C_form__ctyp_attr_tN14C_form__ctyp_t(v_163,
                  _fx_g22C_gen_fdecls__CTypCInt, &ids_ctyp_0), _fx_catch_18);
            FX_CALL(_fx_M12C_gen_fdeclsFM3revLR9Ast__id_t1LR9Ast__id_t(ids_0, &v_164, 0), _fx_catch_18);
            _fx_LN14C_form__cexp_t lstend_1 = 0;
            _fx_LR9Ast__id_t lst_7 = v_164;
            for (; lst_7; lst_7 = lst_7->tl) {
               _fx_N14C_form__cexp_t res_5 = 0;
               _fx_R9Ast__id_t* i_0 = &lst_7->hd;
               FX_CALL(
                  _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(i_0,
                     _fx_g22C_gen_fdecls__CTypCInt, kvar_loc_0, &res_5, 0), _fx_catch_17);
               _fx_LN14C_form__cexp_t node_1 = 0;
               FX_CALL(_fx_cons_LN14C_form__cexp_t(res_5, 0, false, &node_1), _fx_catch_17);
               FX_LIST_APPEND(v_165, lstend_1, node_1);

            _fx_catch_17: ;
               if (res_5) {
                  _fx_free_N14C_form__cexp_t(&res_5);
               }
               FX_CHECK_EXN(_fx_catch_18);
            }
            _fx_make_T2N14C_form__ctyp_tR10Ast__loc_t(ids_ctyp_0, kvar_loc_0, &v_166);
            FX_CALL(
               _fx_M6C_formFM8CExpInitN14C_form__cexp_t2LN14C_form__cexp_tT2N14C_form__ctyp_tR10Ast__loc_t(v_165, &v_166,
                  &ids_init_exp_0), _fx_catch_18);
            _fx_R9Ast__id_t ifaces_ids_0;
            fx_str_t slit_34 = FX_MAKE_STR("ifaces_ids");
            FX_CALL(_fx_M6C_formFM7gen_idcR9Ast__id_t2iS(cm_idx_0, &slit_34, &ifaces_ids_0, 0), _fx_catch_18);
            FX_CALL(_fx_M3AstFM21default_tempval_flagsRM11val_flags_t0(&v_167, 0), _fx_catch_18);
            _fx_M12C_gen_fdeclsFM4SomeNt6option1N14C_form__cexp_t1N14C_form__cexp_t(ids_init_exp_0, &v_168);
            fx_str_t slit_35 = FX_MAKE_STR("");
            FX_CALL(
               _fx_M6C_formFM14create_cdefvalT2N14C_form__cexp_tLN15C_form__cstmt_t7R9Ast__id_tN14C_form__ctyp_tR16Ast__val_flags_tSNt6option1N14C_form__cexp_tLN15C_form__cstmt_tR10Ast__loc_t(
                  &ifaces_ids_0, ids_ctyp_0, &v_167, &slit_35, &v_168, init_ccode_1, kvar_loc_0, &v_169, 0), _fx_catch_18);
            FX_COPY_PTR(v_169.t0, &ids_exp_0);
            FX_COPY_PTR(v_169.t1, &init_ccode_2);
            FX_CALL(
               _fx_M6C_formFM13make_id_t_expN14C_form__cexp_t3R9Ast__id_tN14C_form__ctyp_tR10Ast__loc_t(&free_f_4,
                  _fx_g21C_form__std_fx_free_t, kvar_loc_0, &v_170, 0), _fx_catch_18);
            int_ v_209;
            FX_CALL(_fx_M12C_gen_fdeclsFM8length1_i1LR9Ast__id_t(ids_0, &v_209, 0), _fx_catch_18);
            FX_CALL(_fx_M6C_formFM12make_int_expN14C_form__cexp_t2iR10Ast__loc_t(v_209, kvar_loc_0, &v_171, 0), _fx_catch_18);
            FX_CALL(_fx_M6C_formFM13cexp_get_addrN14C_form__cexp_t1N14C_form__cexp_t(ifaces_id_exp_0, &v_172, 0), _fx_catch_18);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(v_172, 0, true, &v_173), _fx_catch_18);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(iface_entries_exp_0, v_173, false, &v_173), _fx_catch_18);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(ids_exp_0, v_173, false, &v_173), _fx_catch_18);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(v_171, v_173, false, &v_173), _fx_catch_18);
            FX_CALL(_fx_cons_LN14C_form__cexp_t(v_170, v_173, true, &init_ifaces_args_0), _fx_catch_18);
            _fx_R9Ast__id_t v_210;
            fx_str_t slit_36 = FX_MAKE_STR("fx_init_ifaces");
            FX_CALL(_fx_M3AstFM6get_idRM4id_t1S(&slit_36, &v_210, 0), _fx_catch_18);
            FX_CALL(
               _fx_M6C_formFM9make_callN14C_form__cexp_t4R9Ast__id_tLN14C_form__cexp_tN14C_form__ctyp_tR10Ast__loc_t(&v_210,
                  init_ifaces_args_0, _fx_g22C_gen_fdecls__CTypVoid, kvar_loc_0, &call_init_ifaces_0, 0), _fx_catch_18);
            FX_CALL(_fx_M6C_formFM4CExpN15C_form__cstmt_t1N14C_form__cexp_t(call_init_ifaces_0, &v_174), _fx_catch_18);
            FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_174, init_ccode_2, true, &init_ccode_3), _fx_catch_18);
            _fx_R17C_form__cdeftyp_t* v_211 = &ct_1->data;
            _fx_make_R17C_form__cdeftyp_t(&v_211->ct_name, v_211->ct_typ, &v_211->ct_cname, &v_211->ct_props,
               v_211->ct_data_start, &v_211->ct_enum, v_211->ct_ifaces, &ifaces_id_0, v_211->ct_scope, &v_211->ct_loc, &v_175);
            _fx_R17C_form__cdeftyp_t* v_212 = &ct_1->data;
            _fx_free_R17C_form__cdeftyp_t(v_212);
            _fx_copy_R17C_form__cdeftyp_t(&v_175, v_212);
            FX_CALL(
               _fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(decl_ifaces_id_0,
                  top_fcv_decls_0, &v_176, 0), _fx_catch_18);
            _fx_free_LN15C_form__cstmt_t(&top_fcv_decls_0);
            FX_COPY_PTR(v_176, &top_fcv_decls_0);
            FX_CALL(_fx_M12C_gen_fdeclsFM3revLN15C_form__cstmt_t1LN15C_form__cstmt_t(init_ccode_3, &v_177, 0), _fx_catch_18);
            FX_CALL(_fx_M6C_formFM10CStmtBlockN15C_form__cstmt_t2LN15C_form__cstmt_tR10Ast__loc_t(v_177, kvar_loc_0, &v_178),
               _fx_catch_18);
            FX_CALL(_fx_cons_LN15C_form__cstmt_t(v_178, mod_init_calls_0, true, &v_179), _fx_catch_18);
            _fx_free_LN15C_form__cstmt_t(&mod_init_calls_0);
            FX_COPY_PTR(v_179, &mod_init_calls_0);

         _fx_catch_18: ;
            if (v_179) {
               _fx_free_LN15C_form__cstmt_t(&v_179);
            }
            if (v_178) {
               _fx_free_N15C_form__cstmt_t(&v_178);
            }
            if (v_177) {
               _fx_free_LN15C_form__cstmt_t(&v_177);
            }
            if (v_176) {
               _fx_free_LN15C_form__cstmt_t(&v_176);
            }
            _fx_free_R17C_form__cdeftyp_t(&v_175);
            if (init_ccode_3) {
               _fx_free_LN15C_form__cstmt_t(&init_ccode_3);
            }
            if (v_174) {
               _fx_free_N15C_form__cstmt_t(&v_174);
            }
            if (call_init_ifaces_0) {
               _fx_free_N14C_form__cexp_t(&call_init_ifaces_0);
            }
            if (init_ifaces_args_0) {
               _fx_free_LN14C_form__cexp_t(&init_ifaces_args_0);
            }
            if (v_173) {
               _fx_free_LN14C_form__cexp_t(&v_173);
            }
            if (v_172) {
               _fx_free_N14C_form__cexp_t(&v_172);
            }
            if (v_171) {
               _fx_free_N14C_form__cexp_t(&v_171);
            }
            if (v_170) {
               _fx_free_N14C_form__cexp_t(&v_170);
            }
            if (init_ccode_2) {
               _fx_free_LN15C_form__cstmt_t(&init_ccode_2);
            }
            if (ids_exp_0) {
               _fx_free_N14C_form__cexp_t(&ids_exp_0);
            }
            _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(&v_169);
            _fx_free_Nt6option1N14C_form__cexp_t(&v_168);
            _fx_free_R16Ast__val_flags_t(&v_167);
            if (ids_init_exp_0) {
               _fx_free_N14C_form__cexp_t(&ids_init_exp_0);
            }
            _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&v_166);
            if (v_165) {
               _fx_free_LN14C_form__cexp_t(&v_165);
            }
            FX_FREE_LIST_SIMPLE(&v_164);
            if (ids_ctyp_0) {
               _fx_free_N14C_form__ctyp_t(&ids_ctyp_0);
            }
            FX_FREE_LIST_SIMPLE(&v_163);
            if (init_ccode_1) {
               _fx_free_LN15C_form__cstmt_t(&init_ccode_1);
            }
            if (iface_entries_exp_0) {
               _fx_free_N14C_form__cexp_t(&iface_entries_exp_0);
            }
            _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(&v_162);
            _fx_free_Nt6option1N14C_form__cexp_t(&v_161);
            _fx_free_R16Ast__val_flags_t(&v_160);
            if (entries_init_exp_0) {
               _fx_free_N14C_form__cexp_t(&entries_init_exp_0);
            }
            _fx_free_T2N14C_form__ctyp_tR10Ast__loc_t(&v_159);
            if (v_158) {
               _fx_free_LN14C_form__cexp_t(&v_158);
            }
            if (decl_ifaces_id_0) {
               _fx_free_LN15C_form__cstmt_t(&decl_ifaces_id_0);
            }
            if (ifaces_id_exp_0) {
               _fx_free_N14C_form__cexp_t(&ifaces_id_exp_0);
            }
            _fx_free_T2N14C_form__cexp_tLN15C_form__cstmt_t(&v_157);
            _fx_free_R16Ast__val_flags_t(&cv_flags_4);
            _fx_free_R16Ast__val_flags_t(&v_156);
            FX_FREE_STR(&ifaces_cname_0);
            FX_FREE_STR(&v_155);
            FX_FREE_STR(&v_154);
            if (ifaces_ctyp_0) {
               _fx_free_N14C_form__ctyp_t(&ifaces_ctyp_0);
            }
            if (kvar_ifaces_2) {
               _fx_free_LT2R9Ast__id_tLR9Ast__id_t(&kvar_ifaces_2);
            }
            if (v_153) {
               _fx_free_LN14C_form__cexp_t(&v_153);
            }
            _fx_free_Rt6Set__t1R9Ast__id_t(&all_ids_0);
            if (pairs_0) {
               _fx_free_LN14C_form__cexp_t(&pairs_0);
            }
            FX_FREE_LIST_SIMPLE(&ids_0);
            if (init_ccode_0) {
               _fx_free_LN15C_form__cstmt_t(&init_ccode_0);
            }
            _fx_free_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(&v_152);
            if (kvar_ifaces_1) {
               _fx_free_LT2R9Ast__id_tLR9Ast__id_t(&kvar_ifaces_1);
            }
            _fx_free_T4LN15C_form__cstmt_tLR9Ast__id_tLN14C_form__cexp_tRt6Set__t1R9Ast__id_t(&__fold_result___2);
            if (entries_ctyp_0) {
               _fx_free_N14C_form__ctyp_t(&entries_ctyp_0);
            }
            FX_FREE_LIST_SIMPLE(&v_151);
            if (entry_ctyp_0) {
               _fx_free_N14C_form__ctyp_t(&entry_ctyp_0);
            }
            if (ct_1) {
               _fx_free_rR17C_form__cdeftyp_t(&ct_1);
            }
            _fx_free_N15C_form__cinfo_t(&v_150);
            goto _fx_endmatch_0;
         }
      }

   _fx_endmatch_0: ;
      FX_CHECK_EXN(_fx_catch_19);

   _fx_catch_19: ;
      _fx_free_R21K_form__kdefvariant_t(&v_6);
      _fx_free_R17K_form__kdefexn_t(&v_5);
      FX_CHECK_EXN(_fx_cleanup);
   }
   FX_CALL(_fx_M12C_gen_fdeclsFM3revLN15C_form__cstmt_t1LN15C_form__cstmt_t(top_fcv_decls_0, &v_0, 0), _fx_cleanup);
   FX_CALL(_fx_M12C_gen_fdeclsFM3revLN15C_form__cstmt_t1LN15C_form__cstmt_t(top_func_decls_0, &v_1, 0), _fx_cleanup);
   FX_CALL(_fx_M12C_gen_fdeclsFM7__add__LN15C_form__cstmt_t2LN15C_form__cstmt_tLN15C_form__cstmt_t(v_0, v_1, &v_2, 0),
      _fx_cleanup);
   FX_CALL(_fx_M12C_gen_fdeclsFM3revLN15C_form__cstmt_t1LN15C_form__cstmt_t(mod_init_calls_0, &v_3, 0), _fx_cleanup);
   FX_CALL(_fx_M12C_gen_fdeclsFM3revLN15C_form__cstmt_t1LN15C_form__cstmt_t(mod_exn_data_decls_0, &v_4, 0), _fx_cleanup);
   _fx_make_Ta3LN15C_form__cstmt_t(v_2, v_3, v_4, fx_result);

_fx_cleanup: ;
   if (top_fcv_decls_0) {
      _fx_free_LN15C_form__cstmt_t(&top_fcv_decls_0);
   }
   if (top_func_decls_0) {
      _fx_free_LN15C_form__cstmt_t(&top_func_decls_0);
   }
   if (mod_init_calls_0) {
      _fx_free_LN15C_form__cstmt_t(&mod_init_calls_0);
   }
   if (mod_exn_data_decls_0) {
      _fx_free_LN15C_form__cstmt_t(&mod_exn_data_decls_0);
   }
   if (v_0) {
      _fx_free_LN15C_form__cstmt_t(&v_0);
   }
   if (v_1) {
      _fx_free_LN15C_form__cstmt_t(&v_1);
   }
   if (v_2) {
      _fx_free_LN15C_form__cstmt_t(&v_2);
   }
   if (v_3) {
      _fx_free_LN15C_form__cstmt_t(&v_3);
   }
   if (v_4) {
      _fx_free_LN15C_form__cstmt_t(&v_4);
   }
   return fx_status;
}

FX_EXTERN_C int fx_init_C_gen_fdecls(void)
{
   int fx_status = 0;
   return fx_status;
}

FX_EXTERN_C void fx_deinit_C_gen_fdecls(void)
{

}

